西门子MC35 + ATcommand

时间:2014-03-10 01:30:33

标签: avr at-command

我想做两件事。

  1. 识别有人正在通话时 - 在终端中将显示 RING 并回答我必须发送命令 ATA 。但是当我做其他事情时,我怎么能认出来呢。我应该使用新线程和读取端口,直到发送 RING ?有没有更好的解决方案?
  2. 什么是回应结束的象征?我正在使用 for()读取字符,但我不知道符号的数量。以下示例无法正常工作

      while(readCharUART()!=10) {};
    
      while(readCharUART()!=13)
      {  
          getchar() = ..  
      }
    

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。

对于RING然后是,正确的做法是让一个线程只读取调制解调器响应,直到得到Unsolicited result code RING。如果你不时想要运行AT命令(比如说ATA),那么你应该让这个线程也这样做,例如你有一个线程负责发出AT命令和监视UR代码。

关于调制解调器响应的格式化,ITU V.250标准中章5.7.1响应中对此进行了详细描述。简短摘要(强烈推荐阅读规范!):

<header>RING<trailer>

其中标头和预告片都是"\r\n"(除非调制解调器配置奇怪)。