紧急,在线等,关于modem振铃

zengyh 2002-12-30 11:24:22
服务端循环检测是否有数据到达。
如果客户端发起拨号的AT命令,服务端收到的是怎样的一个字符串。
如何告诉对应,这边已准备好?

如果我的连接已经建立,有另一方再发请求,是否由硬件告诉新的请求方忙而无需我软件再处理?

紧急,望各位帮帮忙。
...全文
72 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzhong2 2003-01-03
  • 打赏
  • 举报
回复
对不起,上面的回贴,贴错了地方,请楼主原谅
zzhong2 2003-01-03
  • 打赏
  • 举报
回复
一:
有一本老书,好象叫C++Builder HowTo里面有用TAPI函数控制猫拨号到ISP的例子,读一个线程,写一个线程,一个回调函监视MODEM消息,还有图示,比较清楚。
二:
用TurboPower的APRO控件,据说非常方便实现你要的功能,在Delph窑洞下载,它有例子,有问题问Tern,他对这个控件很熟,对TAPI也熟。
三:
我这有一个用TAPI接收和发送的例子,可以发给你,是别人给我发的,那个贴子现在进不去了(CSDN好多老贴子都进不去了),那位大侠的大名我也查不出来了。
netsys2 2002-12-31
  • 打赏
  • 举报
回复
非也,控制符是专为MODEM层使用,如果你设置了该值,当MODEM收到该字符将过虑掉,你可以做实验,两个MODEM对传0~255 BYTE数据,只要全部接收正确就可以!
zengyh 2002-12-30
  • 打赏
  • 举报
回复
振铃次数是不是指对方发拨号连接请求后,我方modem振铃n次后就自动与对方连接好?其实也是modem的一个参数,对吧。
控制字符是什么意思,我看网上别人的程序,发送AT命令后面都要加\r,如果我发送的是交易数据,不需要加这个控制符号吧?该符号是不是以为AT命令的结束?

记录日志什么意思,如果不记录可不可以?
还有个小问题想请教一下,如果我把交易数据写到缓冲区里,此时对方断开了连接,缓冲区的数据要不要清空,如果要,该如何清?(我觉得要,否则下次的连接不是要把保留的数据发送出去了吗?)

如果有空,麻烦再给我解释下好吗?实在是不清楚。
netsys2 2002-12-30
  • 打赏
  • 举报
回复
交易处理完毕后,任何一方发送挂机都可以,只不过通常由通信的发起方挂机。
挂机后双方的应用程序都会收到DISCONNECT字符,DTR、DSR等也有变化,然后MODEM自动进入命令模式
netsys2 2002-12-30
  • 打赏
  • 举报
回复
是的!通信的建立是MODEM的事,应用程序要做的是:

1)设置MODEM参数,振铃次数,最高速率,有无控制字符,控制字符是什么等
2)建立连接后记录日志
3)对数据流进行处理

去买本MODEM或者异步通信的书,上面更详细些
zengyh 2002-12-30
  • 打赏
  • 举报
回复
对不起,刚看错了,你说:
在拨号时是命令模式,由双方的MODEM自己处理,根本到不了应用层

那么如果我的modem空闲,客户往我这拨号,跟我的应用程序无关,由两个modem自动建好连接,如果我为服务方,拨号根本不需要关心,我只要直接从串口读交易数据就是了。也就是AT命令不会传送到另一方,只会送到modem?是对modem的控制?
zengyh 2002-12-30
  • 打赏
  • 举报
回复
谢谢楼上,是不是对方发送
ATD12345\r,拨号后,我会在串口读出来
CONNECT XXXX。如果读出来了,我就知道连接已经建立了。那么我要不要回传给对方表示我收到了,还是modem已经告诉对方,与我的应用程序无关。

另外再问一下,如果交易处理完毕,是由对方发送挂机的AT命令还是任何一方还是双方都必须?

万分感谢!!
netsys2 2002-12-30
  • 打赏
  • 举报
回复
你收不到对方的AT命令的,因为MODEM工作方式有两种,一是命令模式,一是数据传输模式。在拨号时是命令模式,由双方的MODEM自己处理,根本到不了应用层。
连接好后双方的MODEM会向应用程序发送CONNECT XXXX(其中XXXX为速率),因此你只需要检测CONNECT XXXX就行了。

还有更简单的,检查DTR,DSR信号,建立连接后它们会改变!
zengyh 2002-12-30
  • 打赏
  • 举报
回复
再问一个小问题:
设置控制符是不是把fTXContinueOnXoff设置成false,当设置成false,表示缓冲区的数据达到某个值时,就停止写。

但是一般来说我每次读写的数据都不大,不会大于512个字节,而我的缓冲区开了2K,这样我把fTXContinueOnXoff设置成true也没什么关系吧,因为缓冲区都有足够的空间存放写入的数据。

对了,断开了连接,读缓冲是没有必要清空 的吧,因为数据已经被我读出来了。
zengyh 2002-12-30
  • 打赏
  • 举报
回复
谢谢你。
我已经找到了,是atSn(n为0表示手工,为1..255表示振n次后自动应答)
netsys2 2002-12-30
  • 打赏
  • 举报
回复
PurgeComm(m_hCom,PURGE_RXCLEAR)
-->YES。


AT命令集
--->记不得了,不知是"at&d2\r"还是"atl0\r",还有就是记得配置MODEM为自动应答,否则你只有手工答应
zengyh 2002-12-30
  • 打赏
  • 举报
回复
如果你自己编写COM接口,自己清

一般用什么函数清?我看了别人写了个程序是:
PurgeComm(m_hCom,PURGE_RXCLEAR)
不知道是不是用来请发送缓冲区数据的不?

对了振铃的次数是用AT命令吗?还是别的,刚看了AT命令集,没找到,你能告诉我吗?
netsys2 2002-12-30
  • 打赏
  • 举报
回复
振铃次数是不是指对方发拨号连接请求后,我方modem振铃n次后就自动与对方连接好?其实也是modem的一个参数,对吧。
---->对

控制字符是什么意思
---->流控制,最好关闭

发送AT命令后面都要加\r,如果我发送的是交易数据,不需要加这个控制符号吧?
------>不需要!

该符号是不是以为AT命令的结束?
------>是


记录日志什么意思,如果不记录可不可以?
------>日志:什么时间谁来访问,可以不记

如果我把交易数据写到缓冲区里,此时对方断开了连接,缓冲区的数据要不要清空,如果要,该如何清?
------>要清除,你用什么COM组件做,它就有方法清,如果你自己编写COM接口,自己清

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧