单片机与pc通过modem进行通信(300分)

  • 主题发起人 主题发起人 screen
  • 开始时间 开始时间
S

screen

Unregistered / Unconfirmed
GUEST, unregistred user!
单片机串口有三根线,分别是收、发、地,和一个56k modem相连,
pc机和另一个modem相连,双方的速率为1200,
用串口线直接相连数据传输没有问题,但用modem拨号之后数据传输不
正常,可以从示波器上看到数据确实已经到了串口,可是pc机这端
用超级终端只能收到一些怪字符,而单片机也不能正确收到pc机发出的
数据,真是气死我了。各位大虾快来帮忙呀。
 
?
what about RS232->MODEM->YOUR MACHINE?//瞎说,呵呵。
 
结构如下:
单片机串口->modem->电话线->modem->pc机串口
 
何必一定要用modem
单片机串口-->双绞线-->RS485接口->PC机串口不是很好嘛?
单片机与PC机可以用自己设定的协议通信.

 
可是是远距离呀。
 
RS-485/RS-422标准的传输距离是4000英尺(约1200米)
(距离为1200米时,最大传输距离为100Kbit/s)
使用线路中续器可以构成远距离通讯系统。
由MAX48X/49X组成的差分平衡系统抗干扰能力强,可用于构成RS422/485标准的
通讯网络。
 
这套系统并不要求速率,因为传送的只是少量的
控制信息。通过电话线可以避免了铺线的麻烦,
而且距离可能是跨越几个县。
 
对此我也很感兴趣,我最近也遇到同样的问题,
我的传输距离大约有20km左右同样是用于传输
控制信息.(老板不接受RS485加中继方案〕因为
无法进行拨号,而且我要做的是一点对多点的通信,
即一台PC要与多个终端通信。

一开始我选用Modem做,我问过玩猫的老手,他们
建议我尽量采用低速的猫,因为从很速到很低速
转换时会遇到很多意想不到的问题。如你说的现象。
另外你也没说一下,你的协议,如传输方式,是否是点对点的?
如果是,那通信协议很简单,一般的猫所带的资料基本上就够了
可老兄我可就惨了,最后由于协议的问题把猫的方案给枪毙了。

最后决定用CAN现场总线,因为他自带了一套完整的协议。
有兴趣的话我们可以进一步讨论,希望你能巴你的问题解释清除一点。

 
Modem拨号是有协议的,而单片机与计算机相连是无协议的,当然拨号后出现
乱字符。
 
jams可否说得再详细一点?
不知modem拨号是什么协议,
但我觉得modem和modem拨通后,
应该是一端入什么,另一端出什么。
谢谢各位关注我的问题。
 
问题没有你想的那么简单吧,虽然按用户透明应象你说的那样.
Jams是对的.
在<<电测与仪表Electrical Measurement&amp;Instrumentation>>
1999年第1期第34页有一篇<<利用MCS-51单片机串行口和调制解调器
实现远程通信>>,你可以看一看.
我这没有扫描仪,否则可以给你E过去.
 
也许你很急,我给你抄一些上这里
4.3数据同步
MCS-51单片机虽然有串行口,但不具有RTS.CTS,DTR,TXC,RXC等标准的
RS232C接口的握手信号线.

计算机一般串行口具有异步工作方式,在异步工作串行通信中,波特率的
一致性是数据同步的保证,而帧同步只能靠握手控制线.MCS-51单片机
没有这些握手线,在波特率一致时能保证单个字节传送正确,但无法保证
大量数据的接收正确,导致大量数据的丢失.药用软件保证同步.

当计算机发送一个字节或若干个字节时,一方面计算机采用一定的延时,
另一方面等待MCS-51单片接收正确的应答信号该信号表示接收数据正确与否?
又可起同步作用。
4.4MCS—51和远方中央控制机通信
下面是针对贺氏Modem的一段程序
begin
set bps=2400
set model=1//串口工作方式
ATSO=3//选择应答前振林3次
ATVO//结果码以数字形式显示
AT8F//缺省
A1:ATDT 6803412 以双音频方式呼叫假设电话号码
wait for Modem reply #01H
if no #01H go to A1
....
通信协议规定用ASCII码,为了中央机接收命令清晰,每条命令之后
加CR
 
根据你写的情况,肯定是双方波特率不一致。
 
非常感谢Adamjoe.
不知道那本书在哪里有买的?
我想只要看一看它的例子,肯定就明白了.
不知书上有没有单片机上的程序,因为单片机上的程序不是我写的,
我想看一下是否又特殊要求.
再一次感谢AdamJoe
 
>>不知道那本书在哪里有买的?
这只是一本期刊,期刊号不是给出了吗
上面没有单片机的程序,不过看他写的也没什么,不外乎
工作方式设置,波特率设置,如何拨号之类。
我觉得你的问题可能不是出在单片机的程序上,可能是你的Modem没设好。
再有一点你说的“而且距离可能是跨越几个县”如果你利用现有电话线是
没什么问题的。这方面你可以在本版的其它好多文章这找到答案的。

可老弟我这下可能问题大乐上次提到CAN_FeildBus我研究了一通之后觉得可以
可是我向正在用它的同志打听,给我一个莫大的打击
它根本不能达到提供的通信距离指标10km/5kbps
我想利用电话线,可不能提供,想用光缆也不给,
可能只有再走Modem加Switch了,可我对此不熟
那位大侠可否指点迷津@_@???是否还有其它办法(我指远距离一点对多点通信)
分我会在适当的地方给的。
@_@
._.
. .
 
这几天又研究了一下
对modem进行了一些设置,终于可以传输了。
但有的数对,有的不对,如果传ASCII码0就收不到
不知为何
 
看看《MircoSoft Windows CE通信指南》这本书吧,虽然是讲的Windows CE,但里面
讲电话拨号方面的东西(windows ce 和Windows 9x的API相似)。
还有一本《Windows 95通讯编程》。
 
》但有的数对,有的不对,如果传ASCII码0就收不到
怎么会呢,是不是在你的控制字符中使用了ASCII码0;
另外你最好把你的协议简单的描述一下;
你可以采取插零破坏与控制字符相同的信息字符;
To screen:你那是否有有关Modem Pool(Modem池)的资料?有能否E—Me
adam_love@263.net;
To Hexi
那能down《Windows 95通讯编程》。
 
后退
顶部