У меня есть модем GSM и проверьте его на шпатлевку. оно работает. Затем я отправляю AT с моей программой на C++, но модем отвечает AT. Это просто перекликается с моей командой и нет ответа.
это мой код:Почему моя команда AT эхо в моем GSM-модемом?
#include <QCoreApplication>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <iostream>
int fd;
int openport(void)
{
fd=open("/dev/ttyUSB0",O_RDWR|O_NOCTTY|O_NDELAY);
if (fd==-1)
{
perror("open_port: unable to open port /dev/ttyUSB0\n");
return -1;
}
else
{
printf("open_port: succesfully open port /dev/ttyUSB0\n");
fcntl(fd,F_SETFL,0);
return 1;
}
}
void closeport(void)
{
close(fd);
}
void configport(void)
{
struct termios options;
tcgetattr(fd,&options);
cfsetispeed(&options,B9600);
cfsetospeed(&options,B9600);
options.c_cflag |= (CLOCAL | CREAD);
tcsetattr(fd,TCSANOW,&options);
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_cflag &= ~ PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_iflag &= ~(IXON|IXOFF|IXANY);
}
void writeport1(void)
{
char w[]="AT\r\n";
//std::cout << strlen(w);
//std::cout << w;
write(fd,w,sizeof(w));
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int aa ;
char i[10];
aa=openport();
if (aa==1)
{
configport();
writeport1();
printf("start reading ..... \n");
aa=read(fd,i,sizeof(i));
i[aa]=0;//terminate the string
//std::cout << i << std::endl;
printf("finish reading ..... \n");
}
closeport();
return a.exec();
}
выход заключается в следующем:
Go открыть порт open_port:
успешно открыт порт/DEV/ttyUSB0 порт
[корень @ FriendlyARM /] # ./SerialPort -qws
open_port: успешно открыть порт/DEV/ttyUSB0
начала чтения .....
где моя ошибка?
Может оказаться полезным найти инструмент, который позволит вам точно видеть байты, проходящие через последовательный порт. У меня есть аппаратное устройство, которое я могу подключить к последовательному кабелю и захватить данные, а также программное обеспечение, которое позволяет просматривать данные по мере прохождения через драйвер последовательного порта. Наблюдение * фактических данных в строке * может быть очень полезно для устранения таких неполадок. Вероятно, вы увидите, что байты, поступающие из вашей программы, не совсем то, что вы ожидаете, или что «ОК» действительно вернется, как раз поздно, как говорят другие, может случиться. – Steve
Как я могу видеть передачу байта с последовательным портом? Я думаю, что это моя проблема. (Я имею в виду, возможно, что данные, отправленные мной, имеют проблему). когда я отправляю AT с моим компьютером на модем, немедленно отвечу OK. –