2011-01-10 9 views
2

Hallo ich benutze VC++ 6.0 MSCOMM für die serielle Kommunikation Ich muss Daten lesen (4 Bytes) und Anzeige von der seriellen Schnittstelle.Empfangen von Bytes von der seriellen Schnittstelle

ex: data format is: 
>88 84 10 02 (4 bytes data from port)<br> 
>C6 1E 10 02 (Received Data) but i have to display 88 84 but i am getting C6 and 1E. 

mein Code:

VARIANT data; 
BSTR k; 
static char dbuff[4]; 
int dcount=0; 
CString data; 

if(m_mscom.GetCommEvent()==2) // Receiving data from port 
{ 
    data=m_mscom.GetInput(); 
    k=data.bstrVal; 
    dbuff[dcount] = char (k[0]); 
    dcount++; 

    if(dcount == 4) 
    { 
     dcount=0; 
     data.Format ("%02X%02X%02X%02X", (unsigned char)dbuff[0], 
       (unsigned char)dbuff[1], (unsigned char)dbuff[2], 
       (unsigned char)dbuff[3]); 
    } 
} 

bitte helfen Sie, was in meinem Code falsch ist, Dank im Voraus, bitte geben Sie mir ein Beispiel, wie Bytes von Port zu lesen.

Antwort

0

Überprüfen Sie, ob Sie die richtige Anzahl von Stoppbits verwenden, da Sie möglicherweise eine Schräglage erhalten. Überprüfen Sie das Paritätsbit auf Übertragungsfehler.

Ich habe kürzlich ein schnelles C# -Projekt verwendet, um von der seriellen Schnittstelle zu lesen. Kann Code schreiben, wenn Sie C#

+0

ja, bitte können Sie den Code zu veröffentlichen, – ajeet

+0

wont versuchen, es als mein Anspruch. Ich habe es von hier und nahm es für meine Bewerbung http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/ – Leon

1

wechseln wollen Wenn ich Sie wäre ich folgendes tun würde:

  • verschieben bis zu einem neuen Compiler - VS 2008 oder 2010 eine echte Schnittstelle
  • Gebrauch - nicht COM/MSCOMM

Versuchen Sie, bei der Suche:

WriteFile() 
ReadFile() 
CreateFile() 

Unabhängig von der VS-Version - fallen die MSCOMM Müll und verwenden Dateihandles.

Oder, wenn Sie auf das COM-Objekt bestehen, versuchen Online für C++ und MSComm suchen - wie dieses Ergebnis: http://www.edaboard.com/thread19993.html

Verwandte Themen