请问有什么好的串口控件?十万火急(100分)

  • 主题发起人 主题发起人 plf22
  • 开始时间 开始时间
P

plf22

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用Spcomm,但是发现它只能发出字符型的数据,对方用单片机收到的全是Ascii码,我
想要直接能发byte型的串口控件,而且能在2000下运行的,各位帮帮忙,明天要去公安局做
演示,十万火急啊
 
试试MSComm控件
 
老大,Spcomm也一样可以发送Byte的,需要你自己转换
你也可以用VB下的MScomm控件,都能实现你想要达到的功能
 
其实你在向串口写数据时做个转换就能发送Byte类型的数据
如:Byte(字符)

 
spcomm
在win2000下的串口数大于9的有点问题!不过还是挺好用的
 
Comm1.CommName:='//?/'+Comm1.CommName;
大于9的串口要用上面的处理方法
 
给我你的邮箱,我有一个发给你试试!是<<C++Builder R232窜口通信>>一书所带的
 
能不能给个简单的例子,我是这样发的,那边收到的就是Ascii
var tempCmd:array of Byte;
i,j:integer;
sbuf:Pchar;
str:string;
Cmd:Pchar;
begin
case Cmdobj of
1: //查询
begin
setlength(tempcmd,7);
tempCmd[0]:=27;
tempCmd[1]:=Count;
tempCmd[2]:=0;
tempCmd[3]:=2;
tempCmd[4]:=0;
tempCmd[5]:=strtoint(CarNo);
tempCmd[6]:=CreateCrc(tempCmd,6);
for i:=0 to 6 do str:=str+inttostr(tempCmd);
GetMem(sbuf,Length(str)+1);
StrPLCopy(sbuf,str,Length(str));
Comm1.WriteCommData(sbuf,strlen(sbuf));
end;
 
to coolren:
我的邮箱plf22@163.com
 
如果收到例子还不能解决再找我
我有MScomm和Spcomm的例子
 
to 太平洋:
没有收到例子啊,你就说说怎样转换,是不是和我的程序一样,用个inttostr()
 
to 太平洋:
把你的例子发过来看看
 
我一直都在使用免费的ComPort, 很好用。下载地址 http://www2.arnes.si/~sopecrni/
不过我估计SPComm应该也没有问题的。用ComPort我是这么写的:

var
tempCmd: string[6];
begin
tempCmd[0]:=27;
tempCmd[1]:=Count;
tempCmd[2]:=0;
tempCmd[3]:=2;
tempCmd[4]:=0;
tempCmd[5]:=strtoint(CarNo);
tempCmd[6]:=CreateCrc(tempCmd,6);
ComPort.WriteStr(tempCmd);
 
帮你改了一下,你先试试,不行我再发:
var
tempCmd:array of Byte;
i,j:integer;
sbuf:Pchar;
str:string;
Cmd:Pchar;
begin
setlength(tempcmd,6);
tempCmd[0]:=byte(27);
tempCmd[1]:=byte(Count);//Count应该是数字吧
tempCmd[2]:=byte(0);
tempCmd[3]:=byte(2);
tempCmd[4]:=byte(0);
tempCmd[5]:=byte(strtoint(CarNo));//CarNo应该是字符串吧
tempCmd[6]:=CreateCrc(tempCmd,6);
for i:=0 to 5 do
Comm1.WriteCommData(@tempCmd,1);
 
for i:=0 to 5 do为for i:=0 to 6 do
 
对不起,看错了,我是这么写的:
var
crc: char;
str: string;
begin

str := #27 + char(Count) + #0#2#0 + CarNo; // 如果CarNo是Char
str := #27 + char(Count) + #0#2#0 + Char(CarNo); // 如果CarNo是 integer
str := str + CreateCrc(tempCmd,6);

ComPort.WriteStr( str );
...
end;
 
to 太平洋
问题解决了,能不能请教一下为什么要这样:Comm1.WriteCommData(@tempCmd,1);
我那个tempcmd本来就是byte型,有必要再用byte()转换吗?
 
呵呵,解决了就好啊
function WriteCommData( pDataToWrite: PChar; dwSizeofDataToWrite: Word ): Boolean;
你没必要用byte转换了
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部