spcomm能在XP、2000下用吗?(100分)

  • 主题发起人 主题发起人 300850
  • 开始时间 开始时间
3

300850

Unregistered / Unconfirmed
GUEST, unregistred user!
spcomm能在XP下用吗?
我写一个程序在有COM口Win2000下使用正常,但如在没有Win2000的机器上使用USB转COM口时则不能用,有谁与到过吗?
 
2000正常!
 
在winxp正常
 
windows 2003用都没问题
 
我写了一个通讯程序,在2K下运行正常,但在XP下运行不太良好。
只用了CreateFile,ReadFile,WriteFile三个API。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2340257
 
2K和XP上都没问题,USB转COM没用过.
 
usb转com有点怪,但多调试还是可以的
 
没有问题的,我就是用的usb转串口,有个问题是,在98下,我收到一个6字节的信息马上返回一个6字节信息,中间要15毫秒;在2000和xp下却至少要30毫秒!
 
能不能讲一下,有哪些设置要修改啊。好象USB转串口时写是没有问题,就是读不到。
 
那是你spcom控件里的校验或者流量控制打开了,你那那些都设成false,应该就没问题了;
SetLength(rx,BufferLength);
move(buffer^,Pchar(rx)^,BufferLength);
这是收数的程序!
 
在win2k和xp都能使用.我上个月还写着个程序用到这个控件的
 
我是用过转接口之后不能读不到数据但可以发送数据。
 
98,2000,xp都可以。
 
到底delphi中API,MSCOMM,SPCOMM进行串口通信,哪个更好,更方便一些呢?
小弟正在做一个小区报警软件的设计,通过从com口接收数据解码确认报警的
房号和警情,望有过此类软件设计的大侠不吝赐教.
万分感激!
 
300850,我也遇到这样的问题,若解决了,请告诉我好吗?
e-mail:2000zwj@21cn.com
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, SPComm;

type
TForm1 = class(TForm)
smess: TEdit;
Button1: TButton;
Label2: TLabel;
Memo1: TMemo;
Label1: TLabel;
Memo2: TMemo;
Comm1: TComm;
procedure Button1Click(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2,SendInfo,sendmes:String;
i:integer;
fCheckValue:boolean;
begin
SendInfo:='';
if smess.Text='' then
showmessage('请输入数据!');
s1:=smess.text+',';
fCheckValue:=True;
for i:=1 to length(s1) do
begin
case s1 of
',': begin
case length(s2) of
2: SendInfo:=SendInfo+char(StrToInt('$'+s2));
1: SendInfo:=SendInfo+s2;
0: SendInfo:=SendInfo;
else
fCheckValue:=False;
end;
s2:='';
end
else
s2:=s2+s1;
end;
end;
if fCheckValue then
begin
Memo2.Lines.Add(s1);
comm1.WriteCommData(Pchar(SendInfo),length(SendInfo));
end
else
showmessage('输入数据的格式不正确'#13'信息间采用,区分'#13'注意字符串长度');
end;

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var rx,s10:string;
i:integer;
begin
SetLength(rx,BufferLength);
move(buffer^,Pchar(rx)^,BufferLength);
for i:=1 to Length(rx) do
begin
s10:=s10+'$'+intToHex(ord(rx),2)+',';
end;
Memo1.Lines.Add(s10);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
try
comm1.StartComm;
except
showmessage('打开串口失败');
end;
end;

end.
 
我用的也是usb转串口,就是bafo的转接线,用spcom和单片机通信在xp下都很正常,建议更新串口线驱动,我在没更新驱动前就是收发数很慢,更新后一切问题解决。
 
各位高手:
usb转串口问题:
我在程序中跟踪,发现发'at'+#13,运行到spcomm.pas(ver2.5)的
dwHandleSignaled := WaitForMultipleObjects(3, @HandlesToWaitFor,
False, INFINITE);
在COM下跳到Read Event signaled,而在usb转串口下跳到CommEvent signaled.
我实在不知道什么原因,请高手赐教!!!
 
有谁知道MSCOMM控件为什么在WIN98下注册后还不能使用。。。。
 
后退
顶部