線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3842
推到 Plurk!
推到 Facebook!

SPCOMM收不到数据?

答題得分者是:thanmail
紫電靑霜
一般會員


發表:2
回覆:9
積分:2
註冊:2008-05-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-18 16:26:42 IP:123.65.xxx.xxx 訂閱
为什么我用SPCOMM做的程式收不到数据?代码如下:

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
Comm1.startcomm;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end;

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
S: string;
begin
SetLength(S,BufferLength);
Move(Buffer^, PChar(S)^, BufferLength);
Memo1.Lines.Add(S);
Memo1.Invalidate;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
S:=Edit1.Text;
Comm1.WriteCommData(PChar(s),Length(s));
end;
thanmail
一般會員


發表:4
回覆:20
積分:14
註冊:2004-12-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-18 17:21:15 IP:218.69.xxx.xxx 訂閱
把Move(Buffer^, PChar(S)^, BufferLength);这句
改为
Move(Buffer^, PChar(@S[1])^, BufferLength);试试!
紫電靑霜
一般會員


發表:2
回覆:9
積分:2
註冊:2008-05-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-19 20:08:08 IP:119.123.xxx.xxx 訂閱
不是这个原因,连这个事件都进不到。我发现是COM口的问题,我用的是USB转串口,换成另外一种USB转串口的线就可以,或者直接用主板上的COM口也可以,不知道为什么这个组件兼容性不好,用VC上的CSerialPort就没这个问题。
thanmail
一般會員


發表:4
回覆:20
積分:14
註冊:2004-12-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-20 18:25:12 IP:218.69.xxx.xxx 訂閱
Delphi下还有一个好用的Com组件,而且是免费的。
Tcomport,位置在 http://sourceforge.net/projects/comport/
你可以下载到最新版本和源码和帮助和demo。
用它你再试试!
紫電靑霜
一般會員


發表:2
回覆:9
積分:2
註冊:2008-05-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-21 01:18:34 IP:116.24.xxx.xxx 訂閱
多谢仁兄!我去试试!
紫電靑霜
一般會員


發表:2
回覆:9
積分:2
註冊:2008-05-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-12-23 13:42:51 IP:123.65.xxx.xxx 訂閱
TComPort 挺好用,谢谢 thanmail
編輯記錄
紫電靑霜 重新編輯於 2008-12-23 13:43:41, 註解 無‧
紫電靑霜
一般會員


發表:2
回覆:9
積分:2
註冊:2008-05-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-12-25 23:28:55 IP:116.7.xxx.xxx 訂閱
我昨天还发现一个问题:我用TComPort给GSM Modem发出拨号指令以后,每隔几百毫秒发一次查询命令时收不到回应数据,只有在发一次挂断指令后才能收到一次查询的回应数据,不知道是不是这个组件的 BUG ?
thanmail
一般會員


發表:4
回覆:20
積分:14
註冊:2004-12-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-12-26 12:09:42 IP:218.69.xxx.xxx 訂閱

===================引 用 紫電靑霜 文 章===================
我昨天还发现一个问题:我用TComPort给GSM Modem发出拨号指令以后,每隔几百毫秒发一次查询命令时收不到回应数据,只有在发一次挂断指令后才能收到一次查询的回应数据,不知道是不是这个组件的 BUG ?

你说的挂断指令,是把TComport,CLose再Open,
还是给Modem发挂断指令呢?

你说的 “每隔几百毫秒发一次查询命令时收不到回应数据,”
是指你收不到应答的数据包,还是任何接收数据都没有(是否响应ComPortRxChar事件?)

TComport我用过有一段时间了,几年前用过,最近也用过,
没有发现说发送的包发不出去的bug,
有时通讯错误后,会收到对方机器发来大量的杂论无章的数据,
这不知道是TComport的bug,还是对方机器的bug。
但是
发不出去的bug,应该没有。

你遇到的问题我觉得可能是数据处理的问题,
或者是和MODEM协议上理解的问题。


紫電靑霜
一般會員


發表:2
回覆:9
積分:2
註冊:2008-05-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-12-26 16:46:20 IP:210.21.xxx.xxx 訂閱

===================引 用 thanmail 文 章===================

===================引 用 紫電靑霜 文 章===================
我昨天还发现一个问题:我用TComPort给GSM Modem发出拨号指令以后,每隔几百毫秒发一次查询命令时收不到回应数据,只有在发一次挂断指令后才能收到一次查询的回应数据,不知道是不是这个组件的 BUG ?

你说的挂断指令,是把TComport,CLose再Open,
还是给Modem发挂断指令呢?

你说的 “每隔几百毫秒发一次查询命令时收不到回应数据,”
是指你收不到应答的数据包,还是任何接收数据都没有(是否响应ComPortRxChar事件?)

TComport我用过有一段时间了,几年前用过,最近也用过,
没有发现说发送的包发不出去的bug,
有时通讯错误后,会收到对方机器发来大量的杂论无章的数据,
这不知道是TComport的bug,还是对方机器的bug。
但是
发不出去的bug,应该没有。

你遇到的问题我觉得可能是数据处理的问题,
或者是和MODEM协议上理解的问题。

不是断掉COM口,是给连在COM口上的GSM modem发一条挂断电话的指令。
数据可以发送出去,我是发送的拨号的指令,拨打的手机也能响铃,也收到一部分返回的数据,但是返回的数据中没有拨打的状态数据。我发出的查询指令是 AT CLCC,正常的话应该返回 我发出的 AT CLCC 和 CLCC: 1,0,2,0,0 ... ,但只能收到 AT CLCC,后面缺少 CLCC: 1,0,2,0,0 这一串,用WINDOWS的超级终端就能收到这些。
編輯記錄
紫電靑霜 重新編輯於 2008-12-26 17:14:32, 註解 無‧
thanmail
一般會員


發表:4
回覆:20
積分:14
註冊:2004-12-16

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-12-26 16:56:29 IP:218.69.xxx.xxx 訂閱
===================引 用 紫電靑霜 文 章===================
不是断掉COM口,是给连在COM口上的GSM modem发一条挂断电话的指令。
数据可以发送出去,我是发送的拨号的指令,拨打的手机也能响铃,就是收到一部分返回的数据,但是返回的数据中没有拨打的状态数据。我发出的查询指令是 AT CLCC,正常的话应该返回 我发出的 AT CLCC 和 CLCC: 1,0,2,0,0 ... ,但只能收到 AT CLCC,后面缺少 CLCC: 1,0,2,0,0 这一串,用WINDOWS的超级终端就能收到这些。

那看来应该是协议上的问题,
只能仔细研究一下MODEM的协议了。
对于MODEM的通讯,我没有经验,
具体的问题只能等有经验的人来帮助解决了。

紫電靑霜
一般會員


發表:2
回覆:9
積分:2
註冊:2008-05-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-12-26 17:57:24 IP:210.21.xxx.xxx 訂閱
那谢谢了!
系統時間:2024-11-24 5:15:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!