
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Dietmar, Versuch mal Dein C-Control-Programm mit dem Hyperterminal - da solltest Du das Zeichen zurückerhalten, das Du eingetippt hast.. Ich hatte oft den Effekt, daß das allererste Zeichen, das die C-Control senden sollte "verschluckt" wurde und erst das 2. richtig gesendet wurde. Bei Deinem PC-Programm solltest Du dir mal den ASCII-Code anzeigen lassen, den Du zurückbekommst. Schließlich kannst Du Deine Leseroutine erstmal z.B. mit dem Programm "Hallo Welt.bas" testen - damit Du sehen kannst, ob von der C-Control auch das kommt (respektive kryptischer VBA-Syntax), was Du erwartest. Gruß Carsten > Hallo Forum, > > ich plane ein Programm für meine C-Control I V1.1 das abhängig von Steuerzeichen, die mein PC sendet, verschiedene Routinen ausführt. Für die Programmierung des PCs verwende ich VBA (MS-ACCESS 2000). Für die Kommunikation zwischen PC und C-Control dient die RSAPI.DLL von H.-J. Berndt / B. Kainka. > > Zur Steuerung sendet der PC ASCII-Zeichen an die C-Control. Damit ich kontrollieren kann ob das richtige Zeichen in der C-Control angekommen ist, soll die C-Control die empfangenen Zeichen einfach wieder zum PC zurücksenden. > > Der Empfang dieser Echos bereitet mir derzeit Kopfzerbrechen. Das vom PC empfangene Echo ist nicht das Zeichen das er gesendet hat. Kann mir jemand einen Tipp geben? > > Hier sind die in meinen Programmen enthaltenen Sequenzen. > > C-Control BASIC > #Lesen_RS232 > GET PC_sent > beep 80,8,0 > PUT PC_sent > gosub Anzeige_Z > Return > > Das gesendete Zeichen kommt offensichtlich in der C-Control an, da diese piept und das empfangene Zeichen im Display anzeigt. Das VBA-Programm gibt auch ein empfangenes Echo aus. Leider ist das aber immer das selbe Zeichen egal welches Steuerzeichen gesendet wurde. > > Mein VBA-Programm sieht wie folgt aus: > > Option Compare Database > > Declare Function OPENCOM Lib "RSAPI.DLL" (ByVal COM$) As Integer > Declare Function CLOSECOM Lib "RSAPI.DLL" () As Integer > Declare Function SENDBYTE Lib "RSAPI.DLL" (ByVal B%) As Integer > Declare Function READBYTE Lib "RSAPI.DLL" () As Integer > Declare Function TIMEOUT Lib "RSAPI.DLL" (ByVal ms%) As Integer > > Dim Steuerzeichen As String > Dim Echo As Integer > > ------------------------------------------------------------------ > Public Sub Sende_Byte() > > Steuerzeichen = "R" > > OPENCOM ("COM1,9600,N,8,2") 'Schnittstelle öffnen > TIMEOUT 1000 'Wartezeit auf Schnittstelle erhöhen > > SENDBYTE Asc(Steuerzeichen) 'Zeichen > > Do While Echo < 2 > Echo = READBYTE > Loop > > Debug.Print Steuerzeichen > Debug.Print Echo > CLOSECOM > > End Sub > > > |
| Antwort schreiben |