我正在编写一个程序来控制与卫星通信的 Iridium 调制解调器。每次发送 AT 命令后,调制解调器会回复(根据命令不同)以指示命令是否成功。
目前我已经实现了这样一个程序:在向调制解调器发送每个命令之间,程序只等待 10 秒钟,但这有些冒险,因为它不允许处理错误,以防命令没有成功解释。我唯一知道如何读取串口输入的方法是使用
我正在使用 Linux 操作系统。
目前我已经实现了这样一个程序:在向调制解调器发送每个命令之间,程序只等待 10 秒钟,但这有些冒险,因为它不允许处理错误,以防命令没有成功解释。我唯一知道如何读取串口输入的方法是使用
while(fgets( , ,))
,所以我想知道如何让程序在下一个命令发送之前等待来自串口的调制解调器回复并检查它是什么,而不是采用统一的延迟。我正在使用 Linux 操作系统。
FILE *out = fopen(portName.c_str(), "w");//sets the serial port
for(int i =0; i<(sizeof(messageArray)/sizeof(messageArray[0])); i++)
{
//creates a string with the AT command that writes to the module
std::string line1("AT+SBDWT=");
line1+=convertInt( messageArray[i].numChar);
line1+=" ";
line1+=convertInt(messageArray[i].packetNumber);
line1+=" ";
line1+=messageArray[i].data;
line1+=std::string("\r\n");
//creates a string with the AT command that initiates the SBD session
std::string line2("AT+SBDI");
line2+=std::string("\r\n");
fputs(line1.c_str(), out); //sends to serial port
usleep(10000000); //Pauses between the addition of each packet.
fputs(line2.c_str(), out); //sends to serial port
usleep(10000000);
}