AW: Exception während RS232 Datenempfang
Hallo Anton,
bei mir ist ein Tippfehler im Create. override muss raus. constructor TCncDataReceiver.create(var messageQueue: TThreadQueue<TMeldung>; const comport: shortInt; const destHandle: THandle); Grüße Klaus |
AW: Exception während RS232 Datenempfang
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Klaus
Zeile 16 CNCMessageDispatcher: constructor Create(const destHandle: THandle; var messageQueue: TThreadQueue<TMeldung>);// override; hier habe ic das override entfernt nächste sind 12 Fehler : siehe Beilage: Sollte das receivedMessage nicht receiveMessage sein ? Grüsse Anton |
AW: Exception während RS232 Datenempfang
Hallo Anton,
Delphi-Quellcode:
receivedMessage ist schon richtig, nur das man dort nicht den Type übergeben sollte (mea culpa).
procedure TCncMessageDispatcher.processMessage(meldung: TMeldung);
var NewDataRecord : PNewDataRecord; SendDataRecord : PNewDataRecord; receivedMessage : TMeldung; msg : tagMSG; begin receivedMessage := meldung; try New(NewDataRecord); NewDataRecord^.ThreadID := GetCurrentThreadID; NewDataRecord^.DataLength := Length(receivedMessage); SetLength(NewDataRecord^.Data, Length(receivedMessage)); move(receivedMessage[0], NewDataRecord^.Data[0], NewDataRecord^.DataLength); except on e: Exception do raise Exception.Create(format('Receiver thread error: %s',[e.Message])); end; PostMessage( fDestHandle, TH_MESSAGE, TH_DATAM, Integer(NewDataRecord)); if (receivedMessage[0] and $0F) = $06 then begin if PeekMessage(&msg, 0, 0, 0, PM_REMOVE) then begin case msg.wParam of TTH_SEND: begin SendDataRecord := PNewDataRecord(msg.lParam); fCommTest.transmitMessage(SendDataRecord^.Data); end; end; end; end; PostMessage( fDestHandle, TH_MESSAGE, TH_CLOSE, GetCurrentThreadID ); end; Es sollte dort der Parameter meldung übergeben werden. Grüße Klaus |
AW: Exception während RS232 Datenempfang
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Klaus
da kommt das nechste: schlimmste ist, ich sehe da kein Fehler: zBsp Zeile 145: [dcc32 Fehler] F_MainWindow.pas(145): E2029 ')' erwartet, aber ',' gefunden fCncMessageTransmitter := TCncMessageTransmitter(fOutMessageQueue, COMPORT, Form1.Handle); // ???? Da bin ich ehrlich gesagt total überfordert Grüsse Anton |
AW: Exception während RS232 Datenempfang
Zitat:
Delphi-Quellcode:
Zwei Zeilen tiefer ist nochmal derselbe Lapsus drin.
fCncMessageTransmitter := TCncMessageTransmitter.create(fOutMessageQueue, COMPORT, Form1.Handle);
Grüsse Klaus |
AW: Exception während RS232 Datenempfang
Hallo Klaus
Dies kommt vielfach vor : fOutMessageQueue.Enqueue(SendDataRecord); die Fehler Meldung dazu : [dcc32 Fehler] F_MainWindow.pas(616): E2010 Inkompatible Typen: 'TMeldung' und 'TDataMessage' ich dachte SendDataRecord ist ein Pointer (SendDataRecord : PDataMessage;) dereferenzieren stimmt ofenbar nicht : SendDataRecord^, wo ist dann die TMeldung drin ? Grüsse Anton |
AW: Exception während RS232 Datenempfang
Hallo Anton,
TMeldung habe ich nach cncDataTypes verschoben. Die TInMessageQueue hat einen generischen Type TMeldung.
Delphi-Quellcode:
Grüßesaetze_holen := saetze_holen + 1; LongInt_NCByte(saetze_holen,toSend[1],toSend[2],BufByte);{Satz-Nr ablegen} //New(SendDataRecord2); //SendDataRecord2^.Data := toSend; //SendDataRecord2^.ThreadID := GetCurrentThreadID; //SendDataRecord2^.DataLength := Length(toSend); //fOutMessageQueue.Enqueue(SendDataRecord2^.Data); // oder fOutMessageQueue.Enqueue(toSend); //PostThreadMessage(Threadinfo.ThreadId,TTH_MESSAGE,TTH_SEND,Integer(SendDataRecord)); Klaus Wenn toSend als Parameter verwendet werden kann, spart das die |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz