请教下大家 用delphi里面 mscomm控件发送这样一串十六进制:0AA400100100C20129
代码上要怎么写,以下是我写的,好像有点不行,各路神仙帮忙看看
在一个按钮下面的事件:
var
senddata: array[1..20] of char;
sendstr: string;
restr: string;
i: longint;
begin
mscomm1.CommPort := 1; //指定端口
mscomm1.Settings := '9600,N,8,1'; //其它参数
mscomm1.InBufferSize := 1024; //接收缓冲区
mscomm1.OutBufferSize := 1024; //发送缓冲区
mscomm1.InputMode := comInputModeBinary; //接收模式
mscomm1.InputLen := 0; //一次读取所有数据
mscomm1.SThreshold := 0; //一次发送所有数据
mscomm1.InBufferCount := 0; //清空读取缓冲区
mscomm1.OutBufferCount := 0; //清空发送缓冲区
mscomm1.PortOpen := true; //打开端口
MSComm1.RThreshold := 16; //设置接收多少字节开始产生oncomm事件
senddata[1] := chr($0A); //要发送的数据 0AA400100100C20129
senddata[2] := chr($A4);
senddata[3] := chr($00);
senddata[4] := chr($10);
senddata[5] := chr($01);
senddata[6] := chr($00);
senddata[7] := chr($C2);
senddata[8] := chr($01);
senddata[9] := chr($29);
sendstr := '';
for i := 1 to 9 do
sendstr := sendstr + senddata[i];
mscomm1.output := sendstr;
end;
代码上要怎么写,以下是我写的,好像有点不行,各路神仙帮忙看看
在一个按钮下面的事件:
var
senddata: array[1..20] of char;
sendstr: string;
restr: string;
i: longint;
begin
mscomm1.CommPort := 1; //指定端口
mscomm1.Settings := '9600,N,8,1'; //其它参数
mscomm1.InBufferSize := 1024; //接收缓冲区
mscomm1.OutBufferSize := 1024; //发送缓冲区
mscomm1.InputMode := comInputModeBinary; //接收模式
mscomm1.InputLen := 0; //一次读取所有数据
mscomm1.SThreshold := 0; //一次发送所有数据
mscomm1.InBufferCount := 0; //清空读取缓冲区
mscomm1.OutBufferCount := 0; //清空发送缓冲区
mscomm1.PortOpen := true; //打开端口
MSComm1.RThreshold := 16; //设置接收多少字节开始产生oncomm事件
senddata[1] := chr($0A); //要发送的数据 0AA400100100C20129
senddata[2] := chr($A4);
senddata[3] := chr($00);
senddata[4] := chr($10);
senddata[5] := chr($01);
senddata[6] := chr($00);
senddata[7] := chr($C2);
senddata[8] := chr($01);
senddata[9] := chr($29);
sendstr := '';
for i := 1 to 9 do
sendstr := sendstr + senddata[i];
mscomm1.output := sendstr;
end;
解决方案 »
- 直接端口打印 支持USB接口的打印机吗?
- 帮帮我。。字符串解密
- 这样比较也会出错?
- Delphi大联盟-(最好的讨论,求助QQ群 号码:1463857)
- 疯了,以下问题(TServerSocket 的线程阻塞方式,有代码)困扰我2天了!!100分,在线等待!!!
- 在做一个软件,这个软件的资料登记中有个删除标记的选项,是让打沟或者不打勾的,究竟这个功能是做什么用的
- ==如何对同类的组件进行操作?
- 现成的应用程序如何快速的转换成ACTIVEFORM呢?要注意些什么呢?
- 两个问题,一个50分
- 我要将SQL中的yjy.mdf 数据库中的表 abc 导出成 abc.dbf文件,请问如何操作!谢谢!
- webbrowser打开网页成功,源代码都下载完毕了却不显示,是什么情况?
- 跪求信息系统项目管理师历年试题解析
senddata: array[1..9] of Byte;
sendstr: string;
restr: string;
i: longint;
begin
mscomm1.CommPort := 1; //指定端口
mscomm1.Settings := '9600,N,8,1'; //其它参数
mscomm1.InBufferSize := 1024; //接收缓冲区
mscomm1.OutBufferSize := 1024; //发送缓冲区
mscomm1.InputMode := comInputModeBinary; //接收模式 特别注意这里,你是二进制处理方式(也就是整数方式)
mscomm1.InputLen := 0; //一次读取所有数据
mscomm1.SThreshold := 0; //一次发送所有数据
mscomm1.InBufferCount := 0; //清空读取缓冲区
mscomm1.OutBufferCount := 0; //清空发送缓冲区
mscomm1.PortOpen := true; //打开端口
MSComm1.RThreshold := 16; //设置接收多少字节开始产生oncomm事件 这里也要注意了,要是你接收的数据长度是正好是16,如(FFFFFFFFFFFFFFFF)那就没问题,否则容易产生问题,一般是设为0的,具体看你自己的情况
senddata[1] := $0A; //要发送的数据 0AA400100100C20129
senddata[2] := $A4;
senddata[3] := $00;
senddata[4] := $10;
senddata[5] := $01;
senddata[6] := $00;
senddata[7] := $C2;
senddata[8] := $01;
senddata[9] := $29;
sendstr := '';
for i := 1 to 9 do
sendstr := sendstr + IntToHex(senddata[i],2);
mscomm1.output := senddata;
end;
跟你发送多少位,没有关系,需要多少位就可以发多少位,mscomm1.OutBufferSize := 1024; //发送缓冲区,1024还不够啊?
mscomm1.InBufferSize := 1024; //接收缓冲区
mscomm1.OutBufferSize := 1024; //发送缓冲区