Artikel pedia
| Home | Kontakt | Artikel einreichen | Oberseite 50 artikel | Oberseite 50 autors
 
 


Artikel kategorien
Letztes fugte hinzu
    Ms-access

   Instrumentation + schnittstellen

   Pc tuning - volle kraft voraus für ihr system

   Informatorische grundlagen

   Javascript

   Interne sortieralgorithmen - der kern der sache

   Plotter und sonstige drucker

   Frage 20 (rössl priska)

   Internet - programmierung

   Monitore

   Semesterarbeit und spezialgebiet für informatik

   Erörterungs zum thema

   Inhaltsverzeichnis

   Einführung in die entwicklung ganzheitlicher informationssysteme:

   Titel dokument
alle kategorien

  Pc bus registrer

                                                            Inhalt 1. Einleitung 2 2. Die verwendeten I²C-Bus-Register 2 3. Programmversion ohne Bedienoberfläche 3 4. Programmversion mit Bedienoberfläche 11 4.1.

Grundlegende Funktion von mC- und PC-Programm 11 4.2. Inbetriebnahme mit dem Microcontroller-Board 11 4.3. Hilfesystem 11 4.4.

Anhang 12 4.4.1. Initialisierung 12 4.4.2.

Kommunikationszeichen 12 4.4.3. Gespeicherte Einstellungen 12 4.4.4.

Statuszustände in mC und PC 13 4.4.5. Die Formulare und Module des PC-Programms 14 4.4.5.

1. FormMain 14 4.4.5.2. FormKonfig 32 4.

4.5.3. FormVerbinden 34 4.4.5.

4. FormInfo 36 4.4.6. Das mC-Programm 37       Einleitung Das Programm steuert ein I2C-Bus-System. Dabei bedient es sich vorgegebener Hardwaretreiber, die softwaremäßig angesteuert werden und somit den Bus ansprechen.

Der Benutzer sendet die Daten vom PC aus über die serielle Schnittstelle an den Microcontroller. Dieser steuert über die spezielle Hardware den Bus. Empfangsseitig arbeitet auch ein Microcontroller, der die Daten wiederum über die serielle Schnittstelle zum PC überträgt. Die Realisierung der Bedienerführung des Programms erfolgte in zwei Versionen. Die erste Version, die lediglich als Vorversion zur letztgültigen zweiten Version gedachte war, besteht nur aus dem in Assembler geschriebenen Programm für den Microcontroller, das über ein Terminalprogramm kommuniziert. Einstellungen müssen direkt im Programmcode vorgenommen und dieser anschließend erneut assembliert werden.

Die zweite Version besteht aus einem Assembler-Programm und einem auf Microsoft Windows basierenden Programm für den PC, das mit dem Assembler-Programm kommuniziert.       Die verwendeten I²C-Bus-Register Die Hardwaretreiber des Busses werden von der Software angesprochen, indem diese entsprechende Werte in die zuständigen Register schreibt. Es gibt hierfür vier Register, die wie im folgenden erklärt zu verwenden sind.   S1ADR   A6 A5 A4 A3 A2 A1 A0 GC   In den ersten sieben Bits A0-A6 wird die eigene Adresse gespeichert, mit der der Teilnehmer im Bus angesprochen werden kann. GC bestimmt, ob das Gerät auf einen General Call reagiert; wobei 0 diesen erlaubt und 1 diesen ignoriert.   S1DAT   D7 D6 D5 D4 D3 D2 D1 D0   Bei einem Transmitter wird in dieses Register das zu übertragende Byte geschrieben.

Ein Receiver zeigt damit das soeben empfangene Byte.   S1CON   CR2 ENS1 STA STO SI AA CR1 CR0   Die Bits CR0, CR1, CR2 legen die Übertragungsrate des Busses fest. Das Setzen von ENS1 aktiviert die Bus-Schnittstelle. Setzen von STA oder STO bewirkt eine Start- beziehungsweise Stoppaufforderung an den Bus. STA muß anschließend wieder rückgesetzt werden, STO macht dies selbständig. SI ist das Interrupt-Flag, welches bei jedem Bus-Interrupt gesetzt wird und anschließend rückgesetzt werden muß, um die Busübertragung fortzusetzen.

Ein gesetztes AA läßt das Geräte ein Acknologe schicken, wenn es die Kommunikation erfordert, ein rückgesetztes AA hingegen läßt das Gerät nicht reagieren und damit ein Not Acknolege schicken.     S1STA   S7 S6 S5 S4 S3 S2 S1 S0   Dieses Byte enthält nach einem vom Bus ausgelösten Interrupt den Status, in dem sich der Bus befindet und der den Interrupt ausgelöst hat.       Programmversion ohne Bedienoberfläche Dieses Programm erfüllt die vier Funktionen Master Transmitter, Master Receiver, Slave Transmitter, Slave Receiver. Zu Starten ist das Programm bei der Adresse 8000h. Um die Übertragung als Master zu beginnen, muß „a“ eingegeben werden. Abhängig vom Richtungsbit, das bei dieser Version im Programmcode in den Routinen „08h Start gesendet“ beziehungsweise „10h Repeated-Start gesendet“ eingestellt werden muß, wird das Terminal zum Master Transmitter oder zum Master Receiver.

Da das Programm alle für den Betrieb als Slave nötigen Interruptroutinen enthält, kann es auch als Slave angesprochen werden. Hierbei wird an Hand des empfangenen Richtungsbit zwischen Transmitter und Receiver unterschieden und automatisch die entsprechende Routine angesprochen. Die Übertragung kann vom Transmitter, gleich ob Master oder Slave, mit „!“ beendet werden. Zu beachten ist, daß alle gleichzeitig am Bus verwendeten Programme unterschiedliche eigene Adressen besitzen müssen, was im Programmcode im entsprechenden Register S1ADR in der Routine „Initialisierung“ einzustellen ist.       ;************************************************************ ; I2C-Bus ; Entwickelt für µC-Kit von Kern ; Michael Popp; Februar 1998 ;************************************************************     ;************************************************************ ; Vereinbarungen   charin code 2730h ;Unterprogramm Zeicheneingabe charout code 273Ch ;Unterprogramm Zeichenausgabe   anfang code 8000h ;Start-Adresse inter code 802Bh ;Adresse für I2C-Interrupt haupt code 8200h ;Adresse Hauptprogramm   s1adr data 0dbh ;Eigene Bus-Adresse s1dat data 0dah ;Bus-Daten s1con data 0d8h ;Bus-Kontrollen s1sta data 0d9h ;Bus-Status   P1_6 bit 96h ;SCL-Pin P1_7 bit 97h ;SDA-Pin   si bit 0dbh ;Interrupt Flag aa bit 0dah ;Ackknowledge Flag sta bit 0ddh ;Startbit sto bit 0dch ;Stoppbit   es1 bit 0adh ;I2C-Bus-Interrupt aktivieren ;************************************************************     ;************************************************************ ; Hauptprogramm   org anfang mov dptr,#haupt ; clr a ; jmp @a+dptr ; org haupt call init ;Bus initialisieren loop: mov a,s1sta cjne a,#0F8h,loop ;Interrupts call charin ; cjne a,#61h,loop ; call start ; jmp loop ; ;************************************************************     ;************************************************************ ; Initialisierung ; -> / ; <- / ; cha ea, es1, P1_6, P1_7, s1adr, s1con ; subr /   init: setb ea ;Interrupts aktivieren setb es1 ;I2C-Bus-Interrupts aktivieren setb P1_6 ; setb P1_7 ; mov s1adr,#10000000b ;Eigene Busadresse, General Call aktiviert mov s1con,#11000101b ;Controllregister ;------------------------------------------------------------ ;S1CON: 1 1 0 0 0 1 0 1 ; - ENS1 STA STO SI AA CR1 CR0 ;------------------------------------------------------------ ret ;************************************************************     ;************************************************************ ; Starten ; -> / ; <- / ; cha aa, sta, si ; subr /   start: setb aa setb sta ;Startbit setzen clr si ret ;************************************************************     ;************************************************************ ; Interruptroutinen ; -> / ; <- / ; cha s1dat, s1con, a ; subr charin, charout   ;------------------------------------------------------------ ; 00h alle Bus-Fehler   sta00:   reti ;------------------------------------------------------------ ; 08h MT, MR Start gesendet   sta08: mov S1DAT,#11000000b ;Richtungsbit auf senden ; mov S1DAT,#11000001b ;Richtungsbit auf empfangen clr sta ; clr sto ; setb aa ; clr SI ; reti ;------------------------------------------------------------ ; 10h MT, MR Repeated-Start gesendet   sta10:   mov S1DAT,#11000000b ;Richtungsbit auf senden ; mov S1DAT,#11000001b ;Richtungsbit auf empfangen clr sta ; clr sto ; setb aa ; clr SI ; reti ;------------------------------------------------------------ ; 18h MT Adresse+W gesendet, ACK empfangen   sta18: call charin ;Tastatureingabe cjne a,#21h,lab18a ; ! zum Abbruch setb sto ;Stopbit setzen jmp lab18b ;Verarbeitung der Daten ueberspringen lab18a: call charout ; mov s1dat,a ; lab18b: clr si ;Daten senden oder Verbindung beenden reti ;------------------------------------------------------------ ; 20h MT Adresse+W gesendet, NACK empfangen   sta20: setb STO ;Stop senden clr SI reti ;------------------------------------------------------------ ; 28h MT Daten gesendet, ACK empfangen STANDARD   sta28: call charin ;Tastatureingabe cjne a,#21h,lab28a ; ! zum Abbruch setb sto ;Stopbit setzen jmp lab28b ;Verarbeitung der Daten ueberspringen lab28a: call charout ; mov s1dat,a ; lab28b: clr si ;Daten senden oder Verbindung beenden reti ;------------------------------------------------------------ ; 30h MT Daten gesendet, NACK empfangen   sta30: setb sto clr si reti ;------------------------------------------------------------ ; 38h MT, MR Arbitration verloren beim Senden von Adresse oder Daten (Transmitter) ; beim NACK (Receiver) sta38: setb sto clr si reti ;------------------------------------------------------------ ; 40h MR Adresse+R gesendet, ACK empfangen   sta40: clr si ;auf Daten vom Slave warten reti ;------------------------------------------------------------ ; 48h MR Adresse+R gesendet, NACK empfangen   sta48: setb sto clr si reti ;------------------------------------------------------------ ; 50h MR Daten empfangen, ACK gesendet STANDARD   sta50: mov A,s1dat ;Daten vom Slave in Akku cjne a,#21h,lab50a ; ! von Slave zum Beenden clr aa jmp lab50b lab50a: call charout ;Datenausgabe lab50b: clr si reti ;------------------------------------------------------------ ; 58h MR Daten empfangen, NACK gesendet   sta58: setb sto clr si reti ;------------------------------------------------------------ ; 60h SR Adresse+W empfangen, ACK gesendet   sta60: clr si reti ;------------------------------------------------------------ ; 68h SR Arbitration verloren als adressierter Master, ; Adresse+W empfangen, ACK gesendet sta68: setb sto clr si reti ;------------------------------------------------------------ ; 70h SR General-Call empfangen, ACK gesendet   sta70: clr si reti ;------------------------------------------------------------ ; 78h SR Arbitration verloren als adressierter Master, ; General-Call empfangen, ACK gesendet sta78: setb sto clr si reti ;------------------------------------------------------------ ; 80h SR Daten empfangen, ACK gesendet (adressiert) STANDARD   sta80: mov A,S1DAT ;Daten vom Master in Akku call charout ;Zeichen ausgeben clr si reti ;------------------------------------------------------------ ; 88h SR Daten empfangen, NACK gesendet (adressiert)   sta88: clr si reti ;------------------------------------------------------------ ; 90h SR Daten empfangen, ACK gesendet (General Call)   sta90: mov A,S1DAT ;Daten vom Master in Akku call charout ;Zeichen ausgeben clr si reti ;------------------------------------------------------------ ; 98h SR Daten empfangen, NACK gesendet (General Call)   sta98: clr si reti ;------------------------------------------------------------ ; A0h SR Stop oder Repeated-Start empfangen   staA0: clr si reti ;------------------------------------------------------------ ; A8h ST Adresse+R empfangen, ACK gesendet   staA8: mov r5,#00h ; call charin ;Zeicheneingabe cjne a,#21h,labA8a ; ! von Slave zum Beenden mov r5,#0FFh labA8a: call charout ;Zeichen ausgeben mov S1DAT,A ; clr si ;Uebertragung reti ;------------------------------------------------------------ ; BOh ST Arbitration verloren als adressierter Master, ; Adresse+R empfangen, ACK gesendet staB0: setb sto clr si reti ;------------------------------------------------------------ ; B8h ST Daten gesendet, ACK empfangen STANDARD   staB8: cjne r5,#0FFh,labB8b mov a,#0FFh jmp labB8c labB8b: call charin ;Zeicheneingabe cjne a,#21h,labB8a ; ! von Slave zum Beenden mov r5,#0FFh jmp labB8c labB8a: call charout ;Zeichen ausgeben labB8c: mov S1DAT,A ; clr si ;Uebertragung reti ;------------------------------------------------------------ ; C0h ST Daten gesendet, NACK empfangen   staC0: clr si reti ;------------------------------------------------------------ ; C8h ST AA=0, letzte Daten gesendet, ACK empfangen   staC8: mov S1DAT,0FFh ;S1DAT=11111111b clr si reti ;************************************************************   ;************************************************************ ; Interruptsprünge org inter jmp intera org 8F00h intera: mov A,S1STA ;Je nach Statusinhalt mov dptr,#9000h ;Sprung auf jeweilige jmp @A+dptr ;SUB-Routine ;------------------------------------------------------------ ;------------------------------------------------------------ org 9000h jmp sta00 ;------------------------------------------------------------ org 9008h jmp sta08 ;------------------------------------------------------------ org 9010h jmp sta10 ;------------------------------------------------------------ org 9018h jmp sta18 ;------------------------------------------------------------ org 9020h jmp sta20 ;------------------------------------------------------------ org 9028h jmp sta28 ;------------------------------------------------------------ org 9030h jmp sta30 ;------------------------------------------------------------ org 9038h jmp sta38 ;------------------------------------------------------------ org 9040h jmp sta40 ;------------------------------------------------------------ org 9048h jmp sta48 ;------------------------------------------------------------ org 9050h jmp sta50 ;------------------------------------------------------------ org 9058h jmp sta58 ;------------------------------------------------------------ org 9060h jmp sta60 ;------------------------------------------------------------ org 9068h jmp sta68 ;------------------------------------------------------------ org 9070h jmp sta70 ;------------------------------------------------------------ org 9078h jmp sta78 ;------------------------------------------------------------ org 9080h jmp sta80 ;------------------------------------------------------------ org 9088h jmp sta88 ;------------------------------------------------------------ org 9090h jmp sta90 ;------------------------------------------------------------ org 9098h jmp sta98 ;------------------------------------------------------------ org 90A0h jmp staA0 ;------------------------------------------------------------ org 90A8h jmp staA8 ;------------------------------------------------------------ org 90B0h jmp staB0 ;------------------------------------------------------------ org 90B8h jmp staB8 ;------------------------------------------------------------ org 90C0h jmp staC0 ;------------------------------------------------------------ org 90C8h jmp staC8 ;************************************************************     end       Programmversion mit Bedienoberfläche Das in Kapitel 3 beschriebene Assembler-Programm wurde um zur Kommunikation mit dem PC nötigen Zeilen ergänzt und wird nun über die serielle Schnittstelle mit einem PC-Programm angesprochen. Erstellt wurde dieses mit der Entwicklungsumgebung Microsoft Visual Basic 5.


0 Enterprise Edition.     Grundlegende Funktion von mC- und PC-Programm Um den mC mit dem PC-Programm ansprechen zu können, muß sich der mC im I²C-Bus-Status F8h befinden. Nun kann vom PC-Programm die Verbindung zum mC erstellt werden. Dabei beginnt das Programm die serielle Schnittstelle des PCs zu beanspruchen. Dann sendet es den Befehl 80h an den mC, worauf dieser seinen Status F8h zu melden hat. Geschieht dies korrekt, so schickt der PC nun die Adresse, die das Terminal laut den Einstellungen anzunehmen hat, an den mC, wo sie im entsprechende Register S1ADR gelegt wird.

Weiters aktiviert der mC nun den I²C-Bus und den zugehörigen Interrupt.   Zu Beginn jeder Interrupt Service Routine des I²C-Busses sendet der Microcontroller seinen aktuellen Status an den PC. Der PC hat ebenfalls seinen eigenen Status, der in der Variablen „Status“ gespeichert ist. Erhält nun der PC das OnComm-Ereignis, welches durch den Eingang von Daten über die serielle Schnittstelle ausgelöst wird, so wählt er in einer auf den aktuellen PC-Status bezogenen Case-Anweisung den auszuführenden Programmcode. Hier wird die vom Microcontroller kommende Nachricht, die nun den aktuellen Status des Microcontrollers enthält, eingelesen. Somit kann der PC seinen Status aktualisieren.

Gleichzeitig wird ermittelt, ob der neue Status eine korrekte Fortsetzung des alten Status darstellt oder ob eine Fehler aufgetreten ist. Entsprechend verlaufen die weiteren Vorgänge im PC. Bestimmte Statuszustände im PC erwarten sofort einen weiteren Eingang an Daten vom mC. Dazu wird im PC die Eigenschaft „Enabled“ des Hauptfenster „FormMain“ auf false gesetzt und der Timer aktiviert. Können nun wie erwartet Daten empfangen werden, so wird der Timer deaktiviert und das eingegangene Byte wird verarbeitet. Tritt jedoch das OnComm-Ereignis nicht auf, so schließt der PC nach Ablauf des Timers auf ein Fehlverhalten des mC und gibt eine Fehlermeldung am Bildschirm aus.

    Inbetriebnahme mit dem Microcontroller-Board Um das Programm testweise mit einem Entwicklungs-Board in Betrieb nehmen zu können, muß vorerst mittels eines Terminalprogramms das Assembler-Programm über die serielle Schnittstelle in den mC geladen werden. Dabei darf das PC-Programm noch keinen Anspruch auf die Schnittstelle erheben. Dann ist das mC-Programm an der Adresse 8000h zu starten und die Verbindung mit dem Terminalprogramm zu trennen. Nun wird mit dem PC-Programm über die Schnittstelle die Verbindung zum mC hergestellt, anschließend kann auch die Busverbindung erfolgen. Entnehmen Sie nähere Beschreibungen zu diesen Schritten dem zugehörigen Hilfesystem.     Hilfesystem Das zum Programm gehörende Hilfesystem wurde mit Microsoft Help Workshop 4.

02 erstellt. Es beschreibt die Bedienung des Programms, so daß nähere Erläuterungen in dieser Dokumentation nicht erforderlich sind.   Anhang Initialisierung Sofort nach dem die Verbindung zum Microcontroller hergestellt wurde sendet der PC entsprechend den in der Record-Variablen „Einstellungen“ gespeicherten Einstellungen die folgenden Werte an den Microcontroller.   PC-Variable mC-Variable Beschreibung Einstellungen.OwnAddress S1ADR.0 bis S1ADR.

6 Terminal-Adresse Einstellungen.GetGC S1ADR.7 General Call annehmen   Kommunikationszeichen Mit den folgenden festgelegten Werten fordert der PC den mC zu bestimmten Aktionen auf. Der mC empfängt diese Aufforderungen im Hauptprogramm und führt die entsprechende Aktion auch dort aus.   Code von PC Beschreibung 80h Verbindung zu mC herstellen; mC-Status an PC; I²C-Bus aktivieren 81h Verbindung zu mC trennen; I²C-Bus deaktivieren 82h Startaufforderung an Bus; CALL START 83h Stoppaufforderung an Bus; SETB STO 84h AA rücksetzen; CLR AA 85h AA setzen; SETB AA   Gespeicherte Einstellungen In der Record-Variablen „Einstellungen“ befinden sich die folgenden Einstellungen. Diese Variable wird bei jedem Programmstart aus der Datei „I2C.

ini“, die sich im aktuellen Verzeichnis befinden soll, geladen. Existiert die Datei nicht, so werden die Standardeinstellungen verwendet. Bei Programmbeendigung wird die aktuelle Variable „Einstellungen“ in dieser Datei gespeichert.   Beschreibung Auf General Call reagieren Eigene Adresse An Speichern der Daten erinnern Wartezeit nach Aufforderung Serielle Schnittstelle Ausgewählter Slave oder General Call Slavetyp Slaveadresse   Statuszustände in mC und PC Kennung Modus Beschreibung XX - PC ohne Verbindung LC - Link Controller; Verbindungsversuch zu mC 00 Alle Bus-Fehler F8 - PC mit mC verbunden, kein Bus-Betrieb LB MT, MR Link Bus; Verbindungsversuch mit Bus 08 MT, MR Start gesendet 10 MT, MR Repeated-Start gesendet 18 MT Adresse+W gesendet, ACK empfangen 20 MT Adresse+W gesendet, NACK empfangen 28 MT Daten gesendet, ACK empfangen; STANDARD MT MT Master transmitting; Master sendet derzeit 30 MT Daten gesendet, NACK empfangen 38 MT, MR Arbitration verloren beim Senden von Adresse oder Daten (Transmitter), beim NACK (Receiver) 40 MR Adresse+R gesendet, ACK empfangen 48 MR Adresse+R gesendet, NACK empfangen 50 MR Daten empfangen, ACK gesendet; STANDARD MR MR Master empfängt derzeit RS MR Receiver stopped 58 MR Daten empfangen, NACK gesendet 60 SR Adresse+W empfangen, ACK gesendet 68 SR Arbitration verloren als adressierter Master Adresse+W empfangen, ACK gesendet 70 SR General-Call empfangen, ACK gesendet 78 SR Arbitration verloren als adressierter Master General-Call empfangen, ACK gesendet 80 SR Daten empfangen, ACK gesendet (adressiert); STANDARD SR SR Slave empfängt derzeit (adressiert) 88 SR Daten empfangen, NACK gesendet (adressiert) 90 SR Daten empfangen, ACK gesendet (General Call) GR SR Slave empfängt derzeit (General Call) 98 SR Daten empfangen, NACK gesendet (General Call) A0 SR Stop oder Repeated-Start empfangen A8 ST Adresse+R empfangen, ACK gesendet B0 ST Arbitration verloren als adressierter Master Adresse+R empfangen, ACK gesendet B8 ST Daten gesendet, ACK empfangen; STANDARD ST ST Slave transmitting; Slave sendet derzeit C0 ST Daten gesendet, NACK empfangen C8 ST AA=0, letzte Daten gesendet, ACK empfangen   Die schattierten Zeilen enthalten Zustände, die nur im PC auftreten. Alle anderen Zustände treten im PC und im mC auf.     Die Formulare und Module des PC-Programms Beschreibungen zu einzelnen Einstellungsdetails der Fenster sind dem Hilfesystem zu entnehmen.

  FormMain       Option Explicit   Private Sub Form_Load() IniPfadInit 'Pfad zur Datei I2C.ini festlegen EinstellungenInit True 'Einstellungen laden TextPfad = "" Status = "XX" MenuDateiSpeichern.Enabled = False SetAnzeigen On Error Resume Next MSCommI2C.CommPort = Einstellungen.SerialPort On Error GoTo 0 TimerI2C.Interval = Einstellungen.

StartWarten CommonDialogHelp.HelpFile = App.HelpFile End Sub   Private Sub Form_Unload(Cancel As Integer) Dim Antwort As Variant Dim Gespeichert As Boolean Antwort = -1 If Einstellungen.SaveMsg And (RichTextBoxDaten.Tag = 1) Then Antwort = MsgBox("Möchten Sie die Änderungen des Textfeldes speichern?", vbQuestion + vbYesNoCancel + vbDefaultButton1) Select Case Antwort Case vbYes If (TextPfad = "") Then On Error GoTo Abbrechen CommonDialogSave.ShowSave On Error GoTo Fehler1 RichTextBoxDaten.

SaveFile CommonDialogSave.filename, rtfText On Error GoTo 0 GoTo Ende1 Fehler1: MsgBox "Die Datei konnte nicht gespeichert werden.", vbCritical Abbrechen: Resume Fehler1Weiter Fehler1Weiter: CommonDialogSave.filename = "" Cancel = -1 Ende1: Else On Error GoTo Fehler2 RichTextBoxDaten.SaveFile TextPfad, rtfText GoTo Ende2 Fehler2: MsgBox "Die Datei konnte nicht gespeichert werden.", vbCritical Cancel = -1 Ende2: End If Case vbNo Case vbCancel Cancel = -1 End Select End If If (Cancel = 0) Then EinstellungenInit False End Sub   Private Sub MenuDateiSenden_Click() Dim AltStatus As String * 2 If (Status = "18") Or (Status = "28") Or (Status = "A8") Or (Status = "B8") Then FormMain.

Enabled = False AltStatus = Status Select Case Status Case "18", "28": Status = "MT" Case "A8", "B8": Status = "ST" End Select SetAnzeigen If (RichTextBoxDaten.SelText <> "") Then SendePuffer = RichTextBoxDaten.SelText Else SendePuffer = RichTextBoxDaten.Text End If If Len(SendePuffer) > 0 Then PufferPos = 1 On Error GoTo PortFehler MSCommI2C.Output = Mid(SendePuffer, PufferPos, 1) On Error GoTo 0 TimerI2C.Enabled = True Else Status = AltStatus SetAnzeigen FormMain.

Enabled = True End If End If Exit Sub PortFehler: Resume FehlerWeiter FehlerWeiter: MsgBox "Beim Zugriff auf die serielle Schnittstelle des PCs ist ein Fehler aufgetreten." On Error Resume Next MSCommI2C.PortOpen = False On Error GoTo 0 Status = "XX" SetAnzeigen FormMain.Enabled = True End Sub   Private Sub MenuDateiNeu_Click() Dim Antwort As Variant Dim Gespeichert As Boolean Antwort = -1 If Einstellungen.SaveMsg And (RichTextBoxDaten.Tag = 1) Then Antwort = MsgBox("Möchten Sie die Änderungen des Textfeldes speichern?", vbQuestion + vbYesNoCancel + vbDefaultButton1) Select Case Antwort Case vbYes If (TextPfad = "") Then On Error GoTo Abbrechen CommonDialogSave.

ShowSave On Error GoTo Fehler1 RichTextBoxDaten.SaveFile CommonDialogSave.filename, rtfText On Error GoTo 0 NeuEinrichten GoTo Ende1 Fehler1: MsgBox "Die Datei konnte nicht gespeichert werden.", vbCritical Abbrechen: Resume Fehler1Weiter Fehler1Weiter: CommonDialogSave.filename = "" Ende1: Else On Error GoTo Fehler2 RichTextBoxDaten.SaveFile TextPfad, rtfText NeuEinrichten GoTo Ende2 Fehler2: MsgBox "Die Datei konnte nicht gespeichert werden.

", vbCritical Ende2: End If Case vbNo NeuEinrichten Case vbCancel End Select Else NeuEinrichten End If End Sub   Private Sub NeuEinrichten() RichTextBoxDaten.TextRTF = "" MenuDateiSpeichern.Enabled = False TextPfad = "" RichTextBoxDaten.Tag = 0 End Sub   Private Sub MenuDateiOffnen_Click() On Error GoTo Abbrechen CommonDialogOpen.ShowOpen On Error GoTo Fehler RichTextBoxDaten.LoadFile CommonDialogOpen.

filename, rtfText On Error GoTo 0 TextPfad = CommonDialogOpen.filename MenuDateiSpeichern.Enabled = True RichTextBoxDaten.Tag = 0 Exit Sub Fehler: MsgBox "Die Datei konnte nicht geöffnet werden.", vbCritical Abbrechen: CommonDialogOpen.filename = "" End Sub   Private Sub MenuDateiSpeichern_Click() On Error GoTo Fehler RichTextBoxDaten.

SaveFile TextPfad, rtfText On Error GoTo 0 RichTextBoxDaten.Tag = 0 GoTo Ende Fehler: MsgBox "Die Datei konnte nicht geöffnet werden.", vbCritical CommonDialogOpen.filename = "" Ende: End Sub   Private Sub MenuDateiSpeichernunter_Click() On Error GoTo Abbrechen CommonDialogSave.ShowSave On Error GoTo Fehler RichTextBoxDaten.SaveFile CommonDialogSave.

filename, rtfText On Error GoTo 0 TextPfad = CommonDialogSave.filename MenuDateiSpeichern.Enabled = True RichTextBoxDaten.Tag = 0 GoTo Ende Fehler: MsgBox "Die Datei konnte nicht gespeichert werden.", vbCritical Abbrechen: CommonDialogSave.filename = "" Ende: End Sub   Private Sub MenuDateiBeenden_Click() Unload FormMain End Sub   Private Sub MenuVerbindungUperstellen_Click() On Error GoTo NoPort MSCommI2C.

PortOpen = True On Error GoTo 0 FormMain.Enabled = False Status = "LC" SetAnzeigen On Error GoTo PortFehler MSCommI2C.Output = Chr$(Anmelden) 'Status anfordern On Error GoTo 0 TimerI2C.Enabled = True Exit Sub NoPort: MsgBox "Die gewählte serielle Schnittstelle ist nicht ansprechbar.", vbCritical Exit Sub PortFehler: Resume FehlerWeiter FehlerWeiter: MsgBox "Beim Zugriff auf die serielle Schnittstelle des PCs ist ein Fehler aufgetreten." On Error Resume Next MSCommI2C.

PortOpen = False On Error GoTo 0 Status = "XX" SetAnzeigen FormMain.Enabled = True End Sub   Private Sub MenuVerbindungUptrennen_Click() Dim Trenne As Variant Trenne = vbNo If (Status <> "F8") Then Trenne = MsgBox("Es besteht noch eine Busverbindung. Wird nun die Verbindung zum Microcontroller getrennt, kann der Microcontroller nicht vom Bus getrennt werden. Möchten Sie nun dennoch die Verbindung zum Microcontroller trennen?", (vbYesNo + vbExclamation + vbDefaultButton2)) Else Trenne = vbYes End If If (Trenne = vbYes) Then On Error Resume Next If (Status <> "F8") Then MSCommI2C.Output = Chr$(Abmelden) MSCommI2C.PortOpen = False On Error GoTo 0 Status = "XX" SetAnzeigen End If End Sub   Private Sub MenuVerbindungi2cErstellen_Click() FormMain.

Enabled = False Status = "LB" SetAnzeigen On Error GoTo PortFehler MSCommI2C.Output = Chr$(SendSTA) On Error GoTo 0 TimerI2C.Enabled = True Exit Sub PortFehler: Resume FehlerWeiter FehlerWeiter: MsgBox "Beim Zugriff auf die serielle Schnittstelle des PCs ist ein Fehler aufgetreten." On Error Resume Next MSCommI2C.PortOpen = False On Error GoTo 0 Status = "XX" SetAnzeigen FormMain.Enabled = True End Sub   Private Sub MenuVerbindungi2cErstellenxxx_Click() Dim Verbinde As Boolean FormVerbinden.

Show 1 Verbinde = (Einstellungen.SofortConnect) And (FormVerbinden.Tag = 1) Unload FormVerbinden If Verbinde Then MenuVerbindungi2cErstellen_Click End Sub   Private Sub MenuVerbindungI2ctrennen_Click() If (Status = "18") Or (Status = "28") Or (Status = "40") Or (Status = "50") Then Select Case Status Case "18", "28" Status = "F8" SetAnzeigen On Error GoTo PortFehler MSCommI2C.Output = Chr$(SendSTO) On Error GoTo 0 Case "40", "50" Status = "RS" SetAnzeigen On Error GoTo PortFehler MSCommI2C.Output = Chr$(ClrAA) On Error GoTo 0 End Select End If Exit Sub PortFehler: Resume FehlerWeiter FehlerWeiter: MsgBox "Beim Zugriff auf die serielle Schnittstelle des PCs ist ein Fehler aufgetreten." On Error Resume Next MSCommI2C.

PortOpen = False On Error GoTo 0 Status = "XX" SetAnzeigen FormMain.Enabled = True End Sub   Private Sub MenuEinstellungenKonfig_Click() FormKonfig.Show 1 If FormKonfig.Tag = 1 Then On Error GoTo PortFehler If (Status = "XX") Then MSCommI2C.CommPort = Einstellungen.SerialPort On Error GoTo 0 TimerI2C.

Interval = Einstellungen.StartWarten End If Unload FormKonfig Exit Sub PortFehler: Resume FehlerWeiter FehlerWeiter: MsgBox "Beim Zugriff auf die serielle Schnittstelle des PCs ist ein Fehler aufgetreten." On Error Resume Next MSCommI2C.PortOpen = False On Error GoTo 0 Status = "XX" SetAnzeigen FormMain.Enabled = True End Sub   Private Sub MenuHilfeHilfethemen_Click() 'WinHelp Me.hwnd, App.

HelpFile, &HB, 0 CommonDialogHelp.ShowHelp End Sub   Private Sub MenuHilfeInfo_Click() FormInfo.Show 1 End Sub   Private Sub MSCommI2C_OnComm() Dim PortInput As String TimerI2C.Enabled = False Select Case MSCommI2C.CommEvent Case comEvReceive On Error GoTo PortFehler PortInput = AscB(MSCommI2C.Input) On Error GoTo 0 Select Case Status Case "XX" Case "LC" If (PortInput = 248) Then 'F8 Status = "F8" SetAnzeigen On Error GoTo PortFehler MSCommI2C.

Output = Chr$(AdresseToZahl(Einstellungen.OwnAddress, Einstellungen.GetGC)) On Error GoTo 0 FormMain.Enabled = True Else On Error Resume Next MSCommI2C.PortOpen = False On Error GoTo 0 MsgBox "Der Microcontroller steht in einem vom Anfangsstatus ""F8"" abweichenden Status. Er muß auf diesen Anfangsstatus gestellt werden, bevor er angesprochen werden kann.

", vbExclamation Status = "XX" SetAnzeigen FormMain.Enabled = True End If Case "00" 'Bus-Fehler Case "F8" Select Case PortInput Case 96 '60h SR Status = "60" SetAnzeigen Case 168 'A8h ST Status = "A8" SetAnzeigen End Select Case "LB" On Error GoTo PortFehler If (PortInput = 8) Or (PortInput = 10) Then '8h Select Case Einstellungen.SelectSlave Case True On Error GoTo PortFehler MSCommI2C.Output = Chr$(AdresseToZahl(Einstellungen.SlaveAddress, Einstellungen.SlaveTyp)) On Error GoTo 0 Case False On Error GoTo PortFehler MSCommI2C.

Output = Chr$(AdresseToZahl(GCAddress, False)) On Error GoTo 0 End Select Select Case PortInput Case 8: Status = "08" Case 10: Status = "10" End Select SetAnzeigen TimerI2C.Enabled = True Else MsgBox "Die Startaufforderung an den Bus ist fehlgeschlagen. Es wurde eine ungültige Antwort vom Microcontroller empfangen.", vbCritical Status = "F8" SetAnzeigen FormMain.Enabled = True End If Case "08" 'MT, MR Start gesendet Select Case PortInput Case 24 '18h MT ACK Status = "18" SetAnzeigen FormMain.Enabled = True Case 32 '20h MT NACK Status = "20" SetAnzeigen MsgBox "Der adressierte Slave antwortet nicht.

", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case 64 '40h MR ACK Status = "40" SetAnzeigen FormMain.Enabled = True Case 72 '48h MR NACK Status = "48" SetAnzeigen MsgBox "Der adressierte Slave antwortet nicht.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case Else MsgBox "Der adressierte Slave antwortet nicht. Es wurde ein ungültiger Wert empfangen.

", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True End Select Case "10" 'MT, MR Repeated-Start gesendet Select Case PortInput Case 24 '18h ACK Status = "18" SetAnzeigen FormMain.Enabled = True Case 32 '20h NACK Status = "20" SetAnzeigen MsgBox "Der adressierte Slave antwortet nicht.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case 64 '40h MR ACK Status = "40" SetAnzeigen FormMain.Enabled = True Case 72 '48h MR NACK Status = "48" SetAnzeigen MsgBox "Der adressierte Slave antwortet nicht.

", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case Else MsgBox "Der adressierte Slave antwortet nicht. Es wurde ein ungültiger Wert empfangen.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True End Select Case "18" 'no 'MT Adresse+W gesendet, ACK empfangen Case "20" 'MT Adresse+W gesendet, NACK empfangen Case "28" 'no 'MT Daten gesendet, ACK empfangen STANDARD Case "MT" Select Case PortInput Case 40 '28 ACK If Len(SendePuffer) > PufferPos Then PufferPos = PufferPos + 1 On Error GoTo PortFehler MSCommI2C.Output = Mid(SendePuffer, PufferPos, 1) On Error GoTo 0 TimerI2C.

Enabled = True Else Status = "28" SetAnzeigen FormMain.Enabled = True End If Case 48 '30 NACK Status = "30" SetAnzeigen MsgBox "Der Slave antwortet nicht. Es wurde NACK empfangen.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case Else MsgBox "Es wurde eine ungültige Antwort empfangen.", vbExclamation On Error GoTo PortFehler MSCommI2C.

Output = Chr$(SendSTO) On Error GoTo 0 Status = "F8" SetAnzeigen FormMain.Enabled = True End Select Case "30" 'MT Daten gesendet, NACK empfangen Case "38" 'MT, MR Arbitration verloren beim Senden von Adresse oder Daten (Transmitter) Case "40" 'MR Adresse+R gesendet, ACK empfangen" Select Case PortInput Case 80 '50h FormMain.Enabled = False Status = "MR" SetAnzeigen TimerI2C.Enabled = True Case Else MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet. Es wurde ein ungültiger Wert empfangen.", vbExclamation Status = "F8" SetAnzeigen End Select Case "48" 'MR Adresse+R gesendet, NACK empfangen Case "50" 'MR Daten empfangen, ACK gesendet STANDARD Select Case PortInput Case 80 '50h FormMain.

Enabled = False Status = "MR" SetAnzeigen TimerI2C.Enabled = True Case Else MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet. Es wurde ein ungültiger Wert empfangen.", vbExclamation Status = "F8" SetAnzeigen End Select Case "MR" 'MR RichTextBoxDaten.Text = RichTextBoxDaten.Text + Chr$(PortInput) Status = "50" SetAnzeigen FormMain.

Enabled = True Case "RS" Select Case PortInput Case 88 '58h Status = "F8" SetAnzeigen Case Else MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet. Es wurde ein ungültiger Wert empfangen.", vbExclamation Status = "F8" SetAnzeigen End Select Case "58" 'MR Daten empfangen, NACK gesendet Case "60" 'SR Adresse+W empfangen, ACK gesendet Select Case PortInput Case 128 '80h FormMain.Enabled = False Status = "SR" SetAnzeigen TimerI2C.Enabled = True Case 160 'A0 Status = "A0" SetAnzeigen MsgBox "Die Bus-Verbindung wurde vom Master beendet.", vbInformation Status = "F8" SetAnzeigen Case Else MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet.

Es wurde ein ungültiger Wert empfangen.", vbExclamation Status = "F8" SetAnzeigen End Select Case "68" 'SR Arbitration verloren als adressierter Master," Case "70" 'SR General-Call empfangen, ACK gesendet" Select Case PortInput Case 144 '90h FormMain.Enabled = False Status = "GR" SetAnzeigen TimerI2C.Enabled = True Case 160 'A0 Status = "A0" SetAnzeigen MsgBox "Die Bus-Verbindung wurde vom Master beendet.", vbInformation Status = "F8" SetAnzeigen Case Else MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet. Es wurde ein ungültiger Wert empfangen.

", vbExclamation Status = "F8" SetAnzeigen End Select Case "78" 'SR Arbitration verloren als adressierter Master," Case "80" 'SR Daten empfangen, ACK gesendet (adressiert) STANDARD" Select Case PortInput Case 128 '80h FormMain.Enabled = False Status = "SR" SetAnzeigen TimerI2C.Enabled = True Case 160 'A0 Status = "A0" SetAnzeigen MsgBox "Die Bus-Verbindung wurde vom Master beendet.", vbInformation Status = "F8" SetAnzeigen Case Else MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet. Es wurde ein ungültiger Wert empfangen.", vbExclamation Status = "F8" SetAnzeigen End Select Case "SR": RichTextBoxDaten.

Text = RichTextBoxDaten.Text + Chr$(PortInput) Status = "80" SetAnzeigen FormMain.Enabled = True Case "88" 'SR Daten empfangen, NACK gesendet (adressiert)" Case "90" 'SR Daten empfangen, ACK gesendet (General Call)" Select Case PortInput Case 144 '90h FormMain.Enabled = False Status = "GR" SetAnzeigen TimerI2C.Enabled = True Case 160 'A0 Status = "A0" SetAnzeigen MsgBox "Die Bus-Verbindung wurde vom Master beendet.", vbInformation Status = "F8" SetAnzeigen Case Else MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet.

Es wurde ein ungültiger Wert empfangen.", vbExclamation Status = "F8" SetAnzeigen End Select Case "GR" RichTextBoxDaten.Text = RichTextBoxDaten.Text + Chr$(PortInput) Status = "90" SetAnzeigen FormMain.Enabled = True Case "98" 'SR Daten empfangen, NACK gesendet (General Call)" Case "A0" 'no SR Stop oder Repeated-Start empfangen" Case "A8" 'ST Adresse+R empfangen, ACK gesendet" Case "B0" 'ST Arbitration verloren als adressierter Master," Case "B8" 'ST Daten gesendet, ACK empfangen STANDARD" Case "ST" Select Case PortInput Case 184 'B8 ACK If Len(SendePuffer) > PufferPos Then PufferPos = PufferPos + 1 On Error GoTo PortFehler MSCommI2C.Output = Mid(SendePuffer, PufferPos, 1) On Error GoTo 0 TimerI2C.

Enabled = True Else Status = "B8" SetAnzeigen FormMain.Enabled = True End If Case 192 'C0 NACK Status = "C0" SetAnzeigen MsgBox "Es wurde NACK empfangen. Die Verbindung ist beendet.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case Else MsgBox "Es wurde eine ungültige Antwort empfangen.", vbExclamation Status = "F8" SetAnzeigen FormMain.

Enabled = True End Select Case "C0" 'ST Daten gesendet, NACK empfangen" Case "C8" 'ST AA=0, letzte Daten gesendet, ACK empfangen" End Select End Select Exit Sub PortFehler: Resume FehlerWeiter FehlerWeiter: MsgBox "Beim Zugriff auf die serielle Schnittstelle des PCs ist ein Fehler aufgetreten." On Error Resume Next MSCommI2C.PortOpen = False On Error GoTo 0 Status = "XX" SetAnzeigen FormMain.Enabled = True End Sub   Private Sub TimerI2C_Timer() TimerI2C.Enabled = False Select Case Status Case "XX" 'no Case "LC" On Error Resume Next MSCommI2C.PortOpen = False On Error GoTo 0 MsgBox "Der Microcontroller antwortet nicht.

", vbCritical Status = "XX" SetAnzeigen FormMain.Enabled = True Case "00" 'Bus-Fehler Case "F8" Case "LB" MsgBox "Die Startaufforderung an den Bus ist fehlgeschlagen. Es konnte keine Antwort empfangen werden.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case "08" 'MT, MR Start gesendet MsgBox "Der adressierte Slave antwortet nicht.", vbExclamation On Error GoTo PortFehler MSCommI2C.

Output = Chr$(SendSTO) On Error GoTo 0 Status = "F8" SetAnzeigen FormMain.Enabled = True Case "10" 'MT, MR Repeated-Start gesendet MsgBox "Der adressierte Slave antwortet nicht.", vbExclamation On Error GoTo PortFehler MSCommI2C.Output = Chr$(SendSTO) On Error GoTo 0 Status = "F8" SetAnzeigen FormMain.Enabled = True Case "18" 'MT Adresse+W gesendet, ACK empfangen Case "20" 'MT Adresse+W gesendet, NACK empfangen Case "28" 'MT Daten gesendet, ACK empfangen STANDARD Case "MT" MsgBox "Der Slave antwortet nicht. Es konnte keine Antwort empfangen werden.

", vbExclamation On Error GoTo PortFehler MSCommI2C.Output = Chr$(SendSTO) On Error GoTo 0 Status = "F8" SetAnzeigen FormMain.Enabled = True Case "30" 'MT Daten gesendet, NACK empfangen Case "38" 'MT, MR Arbitration verloren beim Senden von Adresse oder Daten (Transmitter) Case "40" 'MR Adresse+R gesendet, ACK empfangen" Case "48" 'MR Adresse+R gesendet, NACK empfangen Case "50" 'MR Daten empfangen, ACK gesendet STANDARD Case "MR" 'MR MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet. Es konnten keine Daten empfangen werden.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case "RS" Case "58" 'MR Daten empfangen, NACK gesendet Case "60" 'no SR Adresse+W empfangen, ACK gesendet Case "68" 'SR Arbitration verloren als adressierter Master," Case "70" 'no SR General-Call empfangen, ACK gesendet" Case "78" 'SR Arbitration verloren als adressierter Master," Case "80" 'no SR Daten empfangen, ACK gesendet (adressiert) STANDARD" Case "SR": MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet.

Es konnten keine Daten empfangen werden.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case "88" 'SR Daten empfangen, NACK gesendet (adressiert)" Case "90" 'no SR Daten empfangen, ACK gesendet (General Call)" Case "GR" MsgBox "Die Verbindung wurde aufgrund eines Fehlers beendet. Es konnten keine Daten empfangen werden.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case "98" 'SR Daten empfangen, NACK gesendet (General Call)" Case "A0" 'no SR Stop oder Repeated-Start empfangen" Case "A8" 'ST Adresse+R empfangen, ACK gesendet" Case "B0" 'ST Arbitration verloren als adressierter Master," Case "B8" 'ST Daten gesendet, ACK empfangen STANDARD" Case "ST" MsgBox "Der Master antwortet nicht.

Es konnte keine Antwort empfangen werden.", vbExclamation Status = "F8" SetAnzeigen FormMain.Enabled = True Case "C0" 'ST Daten gesendet, NACK empfangen" Case "C8" 'ST AA=0, letzte Daten gesendet, ACK empfangen" End Select Exit Sub PortFehler: Resume FehlerWeiter FehlerWeiter: MsgBox "Beim Zugriff auf die serielle Schnittstelle des PCs ist ein Fehler aufgetreten." On Error Resume Next MSCommI2C.PortOpen = False On Error GoTo 0 Status = "XX" SetAnzeigen FormMain.Enabled = True End Sub   Public Sub SetAnzeigen() 'Menueleiste und Statusleiste aktualisieren SetMenu SetStatusBar End Sub   Public Sub SetMenu() 'Menueleiste aktualisieren Select Case Status Case "XX": SetMenuEinrichten False, False, False, False, True, False Case "LC": SetMenuEinrichten False, False, False, False, False, False Case "00" 'Bus-Fehler Case "F8": SetMenuEinrichten False, True, True, False, False, True Case "LB": SetMenuEinrichten False, False, False, False, False, False Case "08": SetMenuEinrichten False, False, False, False, False, False 'MT, MR Start gesendet Case "10": SetMenuEinrichten False, False, False, False, False, False 'MT, MR Repeated-Start gesendet Case "18": SetMenuEinrichten True, True, True, True, False, True 'MT Adresse+W gesendet, ACK empfangen Case "20": SetMenuEinrichten False, False, False, False, False, False 'MT Adresse+W gesendet, NACK empfangen Case "28": SetMenuEinrichten True, True, True, True, False, True 'MT Daten gesendet, ACK empfangen STANDARD Case "MT": SetMenuEinrichten False, False, False, False, False, False Case "30": SetMenuEinrichten False, False, False, False, False, False 'MT Daten gesendet, NACK empfangen Case "38" 'MT, MR Arbitration verloren beim Senden von Adresse oder Daten (Transmitter) Case "40": SetMenuEinrichten False, False, False, True, False, True 'MR Adresse+R gesendet, ACK empfangen" Case "48": SetMenuEinrichten False, False, False, False, False, False 'MR Adresse+R gesendet, NACK empfangen Case "50": SetMenuEinrichten False, False, False, True, False, True 'MR Daten empfangen, ACK gesendet STANDARD Case "MR": SetMenuEinrichten False, False, False, False, False, True 'MR Case "RS": SetMenuEinrichten False, False, False, False, False, False Case "58": SetMenuEinrichten False, False, False, False, False, False 'MR Daten empfangen, NACK gesendet Case "60": SetMenuEinrichten False, False, False, False, False, True 'SR Adresse+W empfangen, ACK gesendet Case "68" 'SR Arbitration verloren als adressierter Master," Case "70": SetMenuEinrichten False, False, False, False, False, True 'SR General-Call empfangen, ACK gesendet" Case "78" 'SR Arbitration verloren als adressierter Master," Case "80": SetMenuEinrichten False, False, False, False, False, True 'SR Daten empfangen, ACK gesendet (adressiert) STANDARD" Case "SR": SetMenuEinrichten False, False, False, False, False, True Case "88": SetMenuEinrichten False, False, False, False, False, False 'SR Daten empfangen, NACK gesendet (adressiert)" Case "90": SetMenuEinrichten False, False, False, False, False, True 'SR Daten empfangen, ACK gesendet (General Call)" Case "GR": SetMenuEinrichten False, False, False, False, False, True Case "98": SetMenuEinrichten False, False, False, False, False, False 'SR Daten empfangen, NACK gesendet (General Call)" Case "A0": SetMenuEinrichten False, False, False, False, False, False 'SR Stop oder Repeated-Start empfangen" Case "A8": SetMenuEinrichten True, False, False, False, False, True 'ST Adresse+R empfangen, ACK gesendet" Case "B0" 'ST Arbitration verloren als adressierter Master," Case "B8": SetMenuEinrichten True, False, False, False, False, True 'ST Daten gesendet, ACK empfangen STANDARD" Case "ST": SetMenuEinrichten False, False, False, False, False, False Case "C0": SetMenuEinrichten False, False, False, False, False, False 'ST Daten gesendet, NACK empfangen" Case "C8": SetMenuEinrichten False, False, False, False, False, False 'ST AA=0, letzte Daten gesendet, ACK empfangen" End Select End Sub   Public Sub SetMenuEinrichten(Senden, I2cerstellen, I2cerstellenxxx, I2ctrennen, Uperstellen, Uptrennen As Boolean) MenuDateiSenden.

Enabled = Senden MenuVerbindungI2cerstellen.Enabled = I2cerstellen MenuVerbindungI2cerstellenxxx.Enabled = I2cerstellenxxx MenuVerbindungI2ctrennen.Enabled = I2ctrennen MenuVerbindungUperstellen.Enabled = Uperstellen MenuVerbindungUptrennen.Enabled = Uptrennen End Sub   Public Sub SetStatusBar() 'Statusleiste aktualisieren Select Case Status Case "XX" StatusBarMain.

Panels(1).Text = "XX" StatusBarMain.Panels(2).Text = "Keine Verbindung" StatusBarMain.Panels(3).Text = "" Case "LC" StatusBarMain.

Panels(1).Text = "LC" StatusBarMain.Panels(2).Text = "Microcontroller wird gesucht...

" StatusBarMain.Panels(3).Text = "" Case "00" 'Bus-Fehler Case "F8" StatusBarMain.Panels(1).Text = "F8" StatusBarMain.Panels(2).

Text = "Microcontroller verbunden" StatusBarMain.Panels(3).Text = "" Case "LB" StatusBarMain.Panels(1).Text = "LB" StatusBarMain.Panels(2).

Text = "Startaufforderung wird gesendet..." Select Case Einstellungen.SlaveTyp Case True: StatusBarMain.Panels(3).

Text = "Master Receiver" Case False: StatusBarMain.Panels(3).Text = "Master Transmitter" End Select Case "08" 'MT, MR Start gesendet StatusBarMain.Panels(1).Text = "08" StatusBarMain.Panels(2).

Text = "Addresse wird gesendet..." Select Case Einstellungen.SlaveTyp Case True: StatusBarMain.Panels(3).

Text = "Master Receiver" Case False: StatusBarMain.Panels(3).Text = "Master Transmitter" End Select Case "10" 'MT, MR Repeated-Start gesendet StatusBarMain.Panels(1).Text = "10" StatusBarMain.Panels(2).

Text = "Addresse wird gesendet..." Select Case Einstellungen.SlaveTyp Case True: StatusBarMain.Panels(3).

Text = "Master Receiver" Case False: StatusBarMain.Panels(3).Text = "Master Transmitter" End Select Case "18" 'MT Adresse+W gesendet, ACK empfangen StatusBarMain.Panels(1).Text = "18" StatusBarMain.Panels(2).

Text = "Busverbindung besteht" StatusBarMain.Panels(3).Text = "Master Transmitter" Case "20" 'MT Adresse+W gesendet, NACK empfangen StatusBarMain.Panels(1).Text = "20" StatusBarMain.Panels(2).

Text = "Verbindung fehlgeschlagen" StatusBarMain.Panels(3).Text = "Master Transmitter" Case "28" 'MT Daten gesendet, ACK empfangen STANDARD StatusBarMain.Panels(1).Text = "28" StatusBarMain.Panels(2).

Text = "Busverbindung besteht" StatusBarMain.Panels(3).Text = "Master Transmitter" Case "MT" StatusBarMain.Panels(1).Text = "MT" StatusBarMain.Panels(2).

Text = "Daten werden gesendet..." StatusBarMain.Panels(3).Text = "Master Transmitter" Case "30" 'MT Daten gesendet, NACK empfangen StatusBarMain.

Panels(1).Text = "30" StatusBarMain.Panels(2).Text = "Busverbindung beendet" StatusBarMain.Panels(3).Text = "Master Transmitter" Case "38" 'MT, MR Arbitration verloren beim Senden von Adresse oder Daten (Transmitter) Case "40" 'MR Adresse+R gesendet, ACK empfangen" StatusBarMain.

Panels(1).Text = "40" StatusBarMain.Panels(2).Text = "Busverbindung besteht" StatusBarMain.Panels(3).Text = "Master Receiver" Case "48" 'MR Adresse+R gesendet, NACK empfangen StatusBarMain.

Panels(1).Text = "48" StatusBarMain.Panels(2).Text = "Verbindung fehlgeschlagen" StatusBarMain.Panels(3).Text = "Master Receiver" Case "50" 'MR Daten empfangen, ACK gesendet STANDARD StatusBarMain.

Panels(1).Text = "50" StatusBarMain.Panels(2).Text = "Busverbindung besteht" StatusBarMain.Panels(3).Text = "Master Receiver" Case "MR" 'MR StatusBarMain.

Panels(1).Text = "MR" StatusBarMain.Pane

Suchen artikel im kategorien
Schlüsselwort
  
Kategorien
  
  
   Zusammenfassung Der Vorleser

   sachtextanalyse

   interpretation zwist

   Fabel interpretation

   literarische charakteristik

   interpretation bender heimkehr

   felix lateinbuch

   interpretation der taucher von schiller

   textbeschreibung

   charakterisierung eduard selicke
Anmerkungen:

* Name:

* Email:

URL:


* Diskussion: (NO HTML)




| impressum | datenschutz

© Copyright Artikelpedia.com