用SPCcom做的串口通信(能发送正确,但不能正确接收) 本帖最后由 qq673539743 于 2009-08-07 12:04:32 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 bufferlengthx没赋值直接用参数里面的BufferLength procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var strreceive:string; bufferlengthx:word; begin setlength(strreceive,bufferlength); move(buffer,pchar(strreceive)^,bufferlength); memo1.Lines.add(strreceive);end;改成这样还是不行,接收到的数据是乱码... Comm1的属性设置,是不是按指定的参数设的?波特率,停止位 之类的东西 这本书也许对你有用:http://download.csdn.net/source/1523158 如果波特率之类的设置不对那发送数据就不会对了吧,还有就是发现不论发什么数据接收的都是 A8 13 16 00 和 E8 50 16 00 比如我发第一次发 01 08 86 3d 就接到A8 13 16 00 再发就接到E8 50 16 00 procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);beginstrreceive:=''; viewstring:=''; sleep(100); move(buffer^,rbuf,BufferLength); for i:=1 to bufferlength do viewstring:=viewstring+inttohex(rbuf[i],2)+' '; form1.Memo1.Lines.Add(viewstring); form1.Memo1.Lines.Add(' ');end;接收改成这个就可以了..move(buffer^,rbuf,BufferLength);就这个move搞得问一下buffer后面加个^是什么意思啊?buffer是指针在delphi中指针不是地址吗? buffer后面加个^就是指针指向的内存块(指针指向的内容),指针是地址 高手请进----关于一个图片处理中判断的问题! IWDBGrid如何取得Column的属性? 基于TPC/IP通讯问题 哪位朋友能谈一谈TList.Assign的用法?万分感谢! 开发IntraWeb程序时,不能使用ADO吗? 仪表测试软件是怎么做的? 数据库中如何求最大值的问题???? 请问vb和delphi之间怎样通过socket进行通讯?? 如何写回车就可以默认确定组件被击中的代码/ 错在哪里?很急!!!! 新手求问第一贴,if和case 这两个语句有什么区别吗? Delphi access 高手来吧 折磨我一天啦
没赋值直接用参数里面的BufferLength
BufferLength: Word);
var
strreceive:string;
bufferlengthx:word;
begin
setlength(strreceive,bufferlength);
move(buffer,pchar(strreceive)^,bufferlength);
memo1.Lines.add(strreceive);
end;改成这样还是不行,接收到的数据是乱码...
http://download.csdn.net/source/1523158
BufferLength: Word);beginstrreceive:='';
viewstring:='';
sleep(100); move(buffer^,rbuf,BufferLength);
for i:=1 to bufferlength do
viewstring:=viewstring+inttohex(rbuf[i],2)+' ';
form1.Memo1.Lines.Add(viewstring);
form1.Memo1.Lines.Add(' ');end;接收改成这个就可以了..move(buffer^,rbuf,BufferLength);就这个move搞得
问一下buffer后面加个^是什么意思啊?buffer是指针在delphi中指针不是地址吗?