大侠们,我用MSCOMM做了一个串口通信程序,用文本模式相互发送信息就没问题,但如果下位机以16进制方式发送信息,接收就有问题了,请问怎么做16进制方式通信呀,急急急哟!解决问题,马上给分!
解决方案 »
- 多台客户端通过idTcpClient向服务端发送信息后接收的问题。
- Delphi中的Random是基于什么机理,为什么我的程序每一次启动,出来的数据都完全一样?
- 我用Delphi8编程序时,调试程序时出现下面的错误。
- 關於使用ADOQuery控件插入日期型數據的問題,100分!!!!
- 是用CompareStr还是直接比较运行的快?
- webservice服务器端使用控件就报错?
- 如何程序修改.Res资源文件的某些资源?
- 一个关于组件开发的问题
- delphi中数据模块怎么制作?我参照的一个程序它把所有的数据组件,控件都放在DM上了.我很是好奇.想知道它究竟是在解决一个怎样的问题.
- *.nlc 的电子书用那种阅读器阅读
- 急急急!!!!!图片存取及打印问题
- 急急急!!!!串口接收数据的问题(初次接触Delphi下串口编程)
vData :Variant;
i :integer; MSComm1.InputMode := 1; ............
vData := MSComm1.Input; Label1.Caption := '';
for i := 0 to Length(vData) - 1 do
Label1.Caption := Label1.Caption + IntToHex(vData[i],2);
如果再具体点就是,网上有很多串口调试工具,一般都有两种通信方式,一是文本模式,二是16进制模式,只要和串口调试工具互发信息没问题,那就OK了,但16进制方式是怎么转换的呢?
收:var
temp: array of byte;
len: integer;
i:Integer;
output:string;
begin
len := mscomm1.buffersizw;
setlength(temp,len);
temp := mscomm1.input;
output:='';
for i:=1 to len do
output:=output+IntToHex(temp[i-1],2);//output就是结果啦!如果是发送的话
先将你要发送的十六进制数赋值到ARRAY OF BYTE这个动态数组
然后发送 mscomm1.output := temp
这样就可以了给分!!!!
我要200分!!!
mscomm1.inputmode := 1;
如果有必可,可以发完整例子给你!