
接受從單片機發送的資料,現在程式沒有語法錯誤,就是接收不到資料,麻煩給看看哪錯了。謝謝
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, SPComm;
type
TForm1 = class(TForm)
Comm1: TComm;
Memo1: TMemo;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
viewstring: string;
i: integer;
rbuf:array[1..16] of byte;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
comm1.StartComm;
end;
//打開串口
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end;
//關閉串口
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i: integer;
begin
move(buffer^, pchar(@rbuf)^, bufferlength);
for i:= 1 to bufferlength do
viewstring := viewstring+inttohex(rbuf[i], 2)+'';
viewstring := '接受' + viewstring;
memo1.Lines.Add(viewstring);
memo1.Lines.Add('');
end;
end.
uj5u.com熱心網友回復:
move(buffer^, rbuf[1], bufferlength);
這樣試試,另外注意別越界。
uj5u.com熱心網友回復:
你先確認事件里是否可以下斷點, 如果有能斷再確定其他因素, 如果不能斷, 你是否考慮下你的通訊組件的設定是否有問題, 比如 波特率 , 串口號, 建議先上網找到串口除錯工具, 再進一步做測驗uj5u.com熱心網友回復:
頂2樓,Comm1ReceiveData() 斷點,看看此程序是否被執行。
uj5u.com熱心網友回復:
rbuf【1】試過了,沒效果,串口除錯助手能收到資料。到底那出錯了,郁悶uj5u.com熱心網友回復:
可能是單片機發送資料速度過快引起的。把ReadIntervalTimeOut屬性值改成1試試
uj5u.com熱心網友回復:
F5設定斷點,然后怎么查看是否被執行
uj5u.com熱心網友回復:
首先確認下你的波特率、校驗、停止位這些設定的對不對。uj5u.com熱心網友回復:
sleep(200); //加上這句試,時間大小調整下
move(buffer^, pchar(@rbuf)^, bufferlength);
最好加個判斷bufferlength大小的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114609.html
標籤:網絡通信/分布式開發
