我正在尝试制作一个程序,将AT命令发送到我的PCI内置调制解调器。 我尝试使用以下命令:
ECHO ATDT0445534567898 > COM3
但没有任何反应(COM3是我查找调制解调器属性时显示的串口)
所以我在旧的Borland TurboC 3.0编译器上开发了这个程序:
#include<bios.h>
#include<stdio.h>
#include<dos.h>
#define COM1 0
#define COM2 1
#define COM3 2
#define READY 0x100
#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)
/*baud 1200 | 7 data bits | no parity | 1 stop bit*/
void main()
{
int status,i,x=17;
char *atcommand="ATDT0445534567898";
bioscom(0, SETTINGS, COM3);
status = bioscom(3, 0, COM3);
if (status & READY)
{
for(i=0;i<x;i++)
{
bioscom(1, atcommand[i], COM3);
}
}
}
再一次,什么也没发生。调试程序,似乎它实际上是将字符逐个发送到该端口但是 没有拨号动作完成。我试过“ATDT0445534567898;” (我的意思是,AT命令的结尾“;”) 它不起作用。
我想让它变得最简单。我在DOS环境下运行它,但它不起作用。 Dos环境来自Windows XP附带的“cmd”DOS仿真程序。 但是我也在旧的MS-DOS OS计算机上运行相同的程序,结果相同。
实际上,据我所知,AT命令完全由调制解调器解释,所以没有软件模块(Windows XP Os或 应该参与调制解调器驱动程序。因此,我认为直接将相应的AT命令发送到调制解调器 应该够了。
调制解调器工作正常,因为使用超级终端完全相同的AT命令。
所以我想知道发生了什么。