请教DELPHI中SPCOMM控件串口问题
我现在在用UART作串口通讯的时候发现个问题我在程序中用单片机向PC机发一串数据,共31字节。
0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x03,0x02,0x08,0x04
我是用字节发送函数发送的,
上位机用DELPHI编了个软件收不到全部数据,只有02 01 01 我想问是不是连续的0导致这样的
我把所以0改为1就收得到全部数据。不知道什么原因?
如何才能收到0? 估计是你的Delphi程序的问题 我用的是SPCOMM串口控件,连接收一个0都不可以。
我设置断点,当收完数据后数组变量就是02 01 01 ..然后就乱掉了。
程序应该没问题啊,那0除外的怎么能完整的接收呢? 停止位, 波特率是否一樣??
你的單位機用什麼的晶振?串口通信最標準是7.3728M 的晶振! putchar?
printf?
概念----------C语言的字符串与字符
确保上位机的软件正确? 最好先用SSCOM等串口工具来测试。 你先用常用的串口调试工具测试一下,才好确认原因所在。 兄弟,我和你用的一样,程序也是一会好一会坏。我的上位机程序在51芯片上的程序运行就没问题,可一到MEGA16上就乱。这辆天头都晕啦。 单片机什么的都是好的,我在其它的串口调试软件中试过。收到了数据。
在DELPHI中我用的是SPCOMM控件,我想问它是否把字节0给过滤掉了?
有人遇到过吗? 你需要检查以下单片机的伯特律是否正确,特别是误差不可超过3%,如果其误差大,就可能出现开始通信正常,以后又出现错误的现象。 从现象看可以肯定是当成0结束字符串使用了,碰到0就结束了。 楼主大哥:
您好,你可以把你这个程序做一个例子么?我都学delphi许多时候了,还是没有办法做上位机软件, 我现在连spcomm 都安装不了~!不知道怎么回事! procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i: integer;
str: array of char;
begin
move(Buffer^, str, BufferLength);
if (BufferLength < 100) and (str = '$') and (str = #13) and(str = #10) then
begin
GPSBuffers := '';
for i := 0 to BufferLength - 1 do
begin
if str >= ' ' then
GPSBuffers := GPSBuffers + str;
end;
end;
end; 推荐个网站http://www.delphibbs.com/
或许可以解决问题。 如果不是程序问题,那你的SPCOMM的设置要处理,回屏闭某些数值等(0也是其中一种)。 在 spcomm设置里面加上以下设置
myComm.Inx_XonXoffFlow:=false;
myComm.Outx_XonXoffFlow:=false;
myComm.XonChar:=#0;
myComm.XoffChar:=#0; 【14楼】 knight_avr
谢谢!你的提示 {:sleepy:}
页:
[1]