高手请帮忙!(50分)

H

hua8hua

Unregistered / Unconfirmed
GUEST, unregistred user!
我利用spcomm做串口程序时,同时发也同时收,接收一会儿,就出现接收端和发送端
都收不到数据,好像数据被阻塞在线路中间。发送是定时发送的一串数据,请高手给
解答解答。我的串口线很长,可能达到三四米,会不会影响?还有数据大小是否也会
影响?
 
三十米内都没什么问题的,
如果你觉得不保险,可以考虑用长线收发器。
数据最好比较小,应串口通讯速率常为9k.

另:你接线有无问题???
 
包括头的焊接,有无问题呢?
最好检查一下!
 
zyy04,你好,那条线的确有问题,我用另外一条就可以了。不过又有一个问题出现:
当两个程序程序同时发送(相差一点点),就可以发送和接收,中间不会出现一边
收不到的现象。如果把线拔掉,在接上,问题就出现了,有时一边收不到,有时两
边都收不到,请问,这是什么错误?
 
你查一下,看看在用完端口后是不是没断开连接呢,
若未断开连接,你拔线再接就会有不可预期的问题出现!
 
没有断开,在串口还在传输时我把线拔掉,然后再接上,目的是为了测一下断线后是否
还会继续传输。很谢谢你。对了,串口线的电阻会不会影响传输?
 
电阻在规定的范围内可认为无影响,超出就可能有问题了;
具体你可问学硬件的,或电子的!
 
zyy04,很感谢你热心的帮助;两边程序发送时,必须同时发送(允许一点点时间差),
如果差太大,就会出现一边收不到的现象。对了,我发送的数据是从共享内存中
取出来的,如下:
mf_outputbuf:Tpointer;

getmem(mf_outputbuf,datasize);
//从共享内存中取数据,mf_MapFilePointer_out:共享内存变量
CopyMemory(Pointer(integer(mf_outputbuf)), Pointer(integer(mf_MapFilePointer_out), datasize);
//发送数据
comm1.WriteCommData(pchar(mf_outputbuf), datasize);
freemem(mf_outputbuf);

不知道是否是把它定义成Tpointer类型不行,如果我直接发送字符串,如下:
comm1.WriteCommData('12345678901。。。。。90123456789'datasize);
字符串长度达到180个字节,两边接收都正常,不管什么时候发送。
zyy04兄,不知道这个是什么原因?你有没有遇到过这种情况?
请zyy04兄给我指点指点,谢谢了。
 
这个你还是请教别人吧,比如说cAkk和wjiachun,
他们讲的应该比我好!
 
zyy04兄,你好,昨天我又发现新情况了:原来接收端可以收到数据,只是我在接受事件
里有一个条件:BufferLength<10000。而接收端收到的数据长度大于10000,所以我的
程序没有处理,结果就好像没有反应似的,像阻塞。不过怎么会出现大于10000呢?我
发送的数据只有9600,是不是在读的时候,数据还没有取走,下一个数据有来了?请
zyy04兄帮帮忙。
 
这样的,串口数据一次只能发7位,保留一位作校验。
比如说你发数据11111111,传过去的是11111111,10000001
两个高位是校验,一般是数据中1的个数(?可能有点记错了)
 
zyy04兄,有没有oicq号码?能不能告诉我一下,小弟迫切希望向您请教,我的号码是
4347183,谢谢zyy04兄了。
 
接受答案了.
 
你好吗?我是新来的美子!
 

Similar threads

回复
0
查看
701
不得闲
回复
0
查看
886
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
975
SUNSTONE的Delphi笔记
S
顶部