怎样把16进制数EF从串口发出,最好给完整的收发原代码(收到的也是16进制的数),我用的MSCOMM控件,我真的实在想不出来了。我的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
send:array[1..1] of byte;//因为16进制EF大于127。我所以用了BYTE。
//并且协议要求发16进制的EF。
begin
send[1]:=byte(239);
MSComm1.Output :=send[1];
//编译没错。执行时提示:无效的属性值。MSDN中查到错误号380。
end;我的QQ:83743478。[email protected]
procedure TForm1.Button1Click(Sender: TObject);
var
send:array[1..1] of byte;//因为16进制EF大于127。我所以用了BYTE。
//并且协议要求发16进制的EF。
begin
send[1]:=byte(239);
MSComm1.Output :=send[1];
//编译没错。执行时提示:无效的属性值。MSDN中查到错误号380。
end;我的QQ:83743478。[email protected]
解决方案 »
- 求助,有关剪裁图片
- ???DBGridEh最下面加合计栏后,如何去掉中间的网格竖线???
- delphi 清除一个控件下的控件?
- delphi中如何实现拼音首字母查询(使用sql语句)
- 有没有人用过完全在内存中操作的Query控件(可以使用SQL的TDataSet),最好不要依赖于BDE.帮个忙啊.救命啊.
- 如何实现系统托盘的动态图标
- 关于字符串的裁减问题。
- 我有一个pagecontrol控件,里面有tabsheet1和tabsheet2两页,我现在操作tabsheet1,同时我想让tabsheet2的tab不可点,如何做?
- Excel简单问题,答对立即送分!!详情请进!
- 我要作一个在右侧任务栏里显示图标的程序,应该学那些东西?
- 就这点分了。如何在DELPHI里面实现RPC呢?或者通过网络传递对象?
- 对时间字段进行查询,用filter和where有差别吗?
vTmp:variant;
begin
if not MsCommCall.PortOpen then begin
AddLog(Translate('IdleError','Comm closed when send idle code!'),false);
exit;
end;
vTmp:=VarArrayCreate([0,0],varByte);
vTmp[0]:=Byte(239);//the code is 0xefh
MsCommCall.Output:=vTmp;
www.tonixsoft.com
我原来的程序错在那里了?请指教!
使用你原来的方法传的只是一个字符,而字符在127以上的就属于扩展字符了。反正这个组件是不认的,所以就必须使用variant型
具体的我也不太明白,可以参考一下《Delphi串口通信编程》一书,讲到一部分。要请我吃饭??你要到上海来请我了。。呵呵。。
动态数组的定义:
buf:array of byte
mscomm的读:
var
B:variant;
I:word;
InByte: Array of Byte;
m16: String;
Begin
B:=MsComm1.input;
if length(b)=0 then
exit;
SetLength(InByte,length(b));
inByte:=b;
For I:=Low(InByte) To High(InByte) Do begin
M16:=intTohex(inbyte[i],2);
showmessage(M16)
end;
end;MScomm写:
var bf:array of byte;
begin
SetLength(Bf,2);bf[0]:=2;
bf[1]:=6;
Buf:=Bf;mscomm1.Output:=Buf;
end;