Hardware Reference
In-Depth Information
getrennt werden. Innerhalb der Datenfelder sind die ASCII-Zeichen von 0x20 bis
0x7E erlaubt, allerdings mit folgenden Ausnahmen: 0x2C (Komma) und 0x3B
(Semikolon) [IEEE-488.2: 10.14].
1. Feld: Herstellername
2. Feld: Modellbezeichnung
3. Feld: Seriennummer
4. Feld: Firmware-Version
Die ersten beiden Felder müssen einen Inhalt haben, bei den letzten beiden ist das
freigestellt. Wenn keine Seriennummer oder Firmware-Version angegeben wird,
dann muss stattdessen eine Null eingetragen werden, das Feld darf nicht komplett
weggelassen werden.
Im Beispielgerät wird die Antwort auf den Befehl *IDN? aus vier Einträgen zusam-
mengebaut. Für das erste Feld wird derselbe Eintrag wie für den USB-Standard
Device Request GET_STRING_MANUFACTURER verwendet. Er wird aus dem
EEPROM-Speicherbereich genommen und kann dort mit dem Anbieterbefehl
SETUP:MANUfacturer geändert werden. Das Zweite Feld kommt ebenfalls aus dem
EEPROM, und zwar aus derselben Quelle wie für den Request GET_STRING_
PRODUCT. Auch dieser Eintrag ist veränderbar (SETUP:PRODuct). Dasselbe gilt
für den dritten Eintrag, er kommt aus dem EEPROM-Bereich für den Request
GET_STRING_SERIAL_NUMBER (SETUP:SERIalnr). Für das vierte Datenfeld
gibt es keinen Control Request, aber auch dieser Eintrag kommt aus dem EEPROM
und kann dort mit dem Anbieterbefehl SETUP:FIRMware verändert werden. Somit
ist es recht einfach, dem Beispielgerät eine neue Identität zu verpassen, denn dazu
sindkeineProgrammierwerkzeugeerforderlich.
;******************************************************************************
; *IDN? Identification Query
;******************************************************************************
; transfer the response USBTMC message data payload to the bulk IN endpoint
; the message is: <manufacturer>,<product>,<serialnumber>,<firmware>\n
; the start position in the endpoint memory is 0x070C
idn?
; enter the substrings
; STRING_MANUFACTURER
movlw 0x00
movff WREG,EEADR
;pointer to string
call ReadEepromInc
movff EEDATA,DescriptorPointer ;first byte is the length of the string
bulkIN_manu
call ReadEepromInc
movff EEDATA,BULKIN
call ResponseByte
decfsz DescriptorPointer,F
Search WWH ::




Custom Search