求助,一个SPCOMM串口通信的问题
用SPCOMM做串口通信,发送/接收数据基本正常,但遇到个问题:
收数的时候总是会出现"External exception xxxxxx"或者"非法的读写访问xxxxxx"的错误,发送过程很简单,就是把edit1里的一串16进制文本转成byte数组,然后发送,这问题,就是接收有问题,代码如下:
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);var i: Integer; CommData: Array of Byte;begin SetLength(CommData, BufferLength); Move(Buffer, CommData, BufferLength); //接收串口数据 for I := 0 to BufferLength - 1 do // Iterate begin Memo1.Text:= Memo1.Text+ IntToHex(CommData[i],2)+ #32; end; // for} edit2.Text:= IntToStr(bufferLength);end;
procedure TComm.CommWndProc( var msg: TMessage );begin case msg.msg of PWM_GOTCOMMDATA: begin ReceiveData( PChar(msg.LParam), msg.WParam ); LocalFree( msg.LParam ) end; PWM_RECEIVEERROR: ReceiveError( msg.LParam ); PWM_MODEMSTATECHANGE:ModemStateChange( msg.LParam ); PWM_REQUESTHANGUP: RequestHangup; PWM_SENDDATAEMPTY: _SendDataEmpty else with msg do begin Result:= DefWindowProc(fHwnd, Msg, wParam, lParam); end; // with endend;
else with msg do begin Result:= DefWindowProc(fHwnd, Msg, wParam, lParam); end; // with