String über die serielle Schnittstelle senden.



  • Hallo zusammen,

    ich habe eine MFC Anwendung erstellt, womit ich einen einfach Stringen über die sereielle Schnittstelle senden möchte , aber ich weiß leider nicht, wie ich auf die Serial-Klasse zugreifen kann, um den Port zu öffnen und damit den String senden kann.
    Für euer Hilfe wäre ich sehr dankbar.

    Gruß, PasCall



  • ups, ich habe mich vertippt. im ersten Satz meinte ich " ... einen einfachen String..."



  • In
    http://www.codeproject.com/system/serial.asp
    ist ein MFC-Beispiel dabei.



  • Danke erstmal für die Antwort.
    Ich kann das Progamm leider nicht ausführen ... Das Debuggen zeigt mir zwar keinen Fehler, aber es wird einfach nichts asugeführt !!

    Ich habe in meiner SDI-Anwendung eine serielle Klasse, die von CWnd abgeleitet ist, eingebunden.

    // serial.h
    class CSerial: public CWnd
    

    In meinem View habe ich dann ein Opjekt von dieser Klasse erzeugt.

    #include "Serial.h"
    .....
    CSerial port;
    

    , womit ich versuche, auf den seriellen-Port zuzugreifen, aber bis jetzt leider ohne Erfolg.

    Für euere Tipps würde ich mich sehr freuen.
    Danke.

    PasCall



  • Aber Du hast nicht die Klasse verwendet von Codeproject, oder???

    Und wie gesagt: Dort ist ein vollständiges, funktionsfähiges Beispiel dabei...



  • Die Klasse habe ich habe ich woanders gefunden.
    Das Beispiel von Codeprojekt funktioniert bei mir weder mit VC2005 noch mit VC6.0



  • Ich habe bis jetzt mit einer seriellen-Klasse geschafft, Bytes zu senden und zu empfangen.
    Ich würde gerne diese Klasse erweitern, dass ich damit auch alphabetische zeichen senden und empfangen kann.

    // serial.cpp
    	BOOL ReadByte(BYTE &resp);
    	BOOL WriteByte(BYTE bybyte);
    
    // serial.cpp
    BOOL CSerial::WriteByte(BYTE bybyte)
    {
    	iBytesWritten=0;
        if(WriteFile(hComm,&bybyte,1,&iBytesWritten,NULL)==0)
        return false;
        else return true;
    }
    
    /////////////////////////////////////
    BOOL CSerial::ReadByte(BYTE	&resp)
    {
        BYTE rx;
        resp=0;
    
        DWORD dwBytesTransferred=0;
    
    if (ReadFile (hComm, &rx, 1, &dwBytesTransferred, 0))
    {
        if (dwBytesTransferred == 1)
          { resp=rx;
            return true;
          }
    }
    
    	return false;
    }
    

    Kann mir bitte jemand helfen?
    Danke.



  • WriteString(LPCSTR str)
    {
      for(size_t i=0; i<strlen(str); i++)
        WriteByte((BYTE) str[i]);
    }
    


  • mein vorschlag:

    DWORD WriteString (LPCSTR str)
    {
        DWORD BytesWritten = 0;
        WriteFile (hComm, str, strlen(str), &BytesWritten, NULL);
        return BytesWritten;
    }
    

    🙂



  • Vielen Dank.
    mit den beiden Methoden funktioniert das schreiben wunderbar, aber wie geht das mit dem Lesen?
    Ich habe versucht, die Read-Methode umzuändern, damit die eingehenden Bytes in einem String abgelegt werden, aber es wird immer nur das erste Byte eingelesen!
    Danke nochmal


Anmelden zum Antworten