delphi的com口编程求救!!(100分)

  • 主题发起人 主题发起人 qiswim
  • 开始时间 开始时间
Q

qiswim

Unregistered / Unconfirmed
GUEST, unregistred user!
:
我用的是MSCOMM控件,但是在发送的时候只能发送0~~~128,我用的是Char类型发送的,怎么能让他发送0~~`255的数据
ab:char;
bc:shortint;
ac:byte;
begin


Mscomm1.Settings :=ComboBox1.Text;
if ComboBox2.Text ='com1' then // 假设只考虑com1和com2两种情况
Mscomm1.CommPort :=1
else
Mscomm1.CommPort :=2;

Mscomm1.PortOpen :=true; // 打开串口
Mscomm1.InBufferCount :=0; // 清空接收缓冲区
Mscomm1.DTREnable :=true; // 数据终端准备好
Mscomm1.RTSEnable :=true; // 请求发送
Mscomm1.RThreshold :=strtoint(combobox4.text); // 每次接收到字符即产生OnComm事件
bc:=strtoint(edit1.text);
ac:=byte(bc);
ab:=char(ac);
Mscomm1.Output:=(ab);//数据发送,只能发送0---128!我想要发送0--255!
memo2.Text:=memo2.Text+edit1.text+',';
application.ProcessMessages ;
 
首先InputMode设置成comInputModebinary,另外,发送子程序加代码:
var
tv::variant;

...

tv:=VarArrayCreate([1,1], varbyte);
tv[1]:=$55;
form1.mscomm2.output:=tv;

tv[1]:=$91;
form1.mscomm2.output:=tv;
...
 
对呀 连着发两次不就行了
 
象楼上说的那样
InputMode属性设成了comInputModeText,
于是大于128的16进制便显示不了了.
InputMode属性设成comInputModeBinary,接收就可以了。
 
楼上说的我试了,小弟水平有限!请在明试!!!
 
后退
顶部