我初次接触串口开发。
用的spcomm,为什么我发某个指令后,第一次都接收不到数据呢,以后每次有正常的呢?
下面是我的源代码:
procedure TmainForm.btnSendDataClick(Sender: TObject);
begin
if not (comm1.WriteCommData(PChar(trim(edtCommand.Text)),length(trim(edtCommand.Text)))) then
showMessage('send data faild');
end;procedure TmainForm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
strTemp,strDateTime: String;
begin
//showMessage('data received. ' + intToStr(bufferLength));
setLength(strTemp,bufferLength);
move(buffer^,PChar(strTemp)^,bufferLength);
strDateTime := formatDateTime('yyyy-mm-dd hh:nn:ss:zzz',now);
mmReceivedData.Lines.Add('[' + strDateTime + '] ' + strTemp);
end;procedure TmainForm.btnCloseComClick(Sender: TObject);
begin
comm1.StopComm;
end;procedure TmainForm.Comm1ReceiveError(Sender: TObject; EventMask: Cardinal);
begin
showMessage('An error occured');
end;procedure TmainForm.btnOpenComClick(Sender: TObject);
begin
if length(trim(cmbxSerialPort.Text)) < 1 then
begin
showMessage('Please select a serial port');
exit;
end;
comm1.StartComm(cmbxSerialPort.text,strToInt(edtBaudRate.Text));
comm1.Outx_XonXoffFlow := false;
comm1.Parity := None;
comm1.StopBits := _1;
comm1.ByteSize := _8;
end;
用的spcomm,为什么我发某个指令后,第一次都接收不到数据呢,以后每次有正常的呢?
下面是我的源代码:
procedure TmainForm.btnSendDataClick(Sender: TObject);
begin
if not (comm1.WriteCommData(PChar(trim(edtCommand.Text)),length(trim(edtCommand.Text)))) then
showMessage('send data faild');
end;procedure TmainForm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
strTemp,strDateTime: String;
begin
//showMessage('data received. ' + intToStr(bufferLength));
setLength(strTemp,bufferLength);
move(buffer^,PChar(strTemp)^,bufferLength);
strDateTime := formatDateTime('yyyy-mm-dd hh:nn:ss:zzz',now);
mmReceivedData.Lines.Add('[' + strDateTime + '] ' + strTemp);
end;procedure TmainForm.btnCloseComClick(Sender: TObject);
begin
comm1.StopComm;
end;procedure TmainForm.Comm1ReceiveError(Sender: TObject; EventMask: Cardinal);
begin
showMessage('An error occured');
end;procedure TmainForm.btnOpenComClick(Sender: TObject);
begin
if length(trim(cmbxSerialPort.Text)) < 1 then
begin
showMessage('Please select a serial port');
exit;
end;
comm1.StartComm(cmbxSerialPort.text,strToInt(edtBaudRate.Text));
comm1.Outx_XonXoffFlow := false;
comm1.Parity := None;
comm1.StopBits := _1;
comm1.ByteSize := _8;
end;
解决方案 »
- idhttp 提交数据的地址为UTF-8编码时是不是需要转换???
- 各位大哥,哪能里有好的位图图片下载呀!
- 如何判断在另外一个窗体上的Button是否按下?
- 在delph里如何把表中的数据导出到word或excel中呢.请赐教.
- 请问button失去焦点是哪个事件??onexit不是啊,VB就有个onmouseout事件,DELPHI怎没
- 回忆的心情
- DELPHI调用存储过程的一个问题
- 在线等候-Word文档存入SQL数据库后如果再进行查找
- sql server中如何使用处理IIF函数?
- 有关于动态数组和Access Violation的错误,请大家指教!
- 关于delphi网络开发的群:9916187
- **如何将Blob类型字段里的内容转换成可见字符串**
if length(trim(cmbxSerialPort.Text)) < 1 then
begin
showMessage('Please select a serial port');
exit;
end; comm1.Outx_XonXoffFlow := false;
comm1.Parity := None;
comm1.StopBits := _1;
comm1.ByteSize := _8; comm1.StartComm(cmbxSerialPort.text,strToInt(edtBaudRate.Text));
end;