USB 모뎀에 AT 명령을 보내는 데 문제가 있습니다. 처음에는 php-serial 클래스를 사용해 보았으나 데이터를 읽어보니 이상한 데이터가 포함된 무한 루프에 부딪혔습니다. 그런 다음 문제 디버깅을 시도하고 퍼티 터미널을 열고 명령을 실행했습니다.
cat /dev/ttyUSB0
그런 다음 명령을 보낸 후에는 항상 echo "AT" > /dev/ttyUSB0
끝이 없는 루프가 발생합니다.cat /dev/ttyUSB0
AT
AT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^
그리고 이 순환은 결코 끝나지 않습니다. Windows에서는 모든 것이 잘 작동합니다. 가상 COM 포트를 통해 USB 모뎀에 연결하고 명령을 보내고 응답을 받을 수 있습니다.
문제는 왜 콘솔에서 "OK" 메시지를 받을 수 없는데 이 데이터 루프가 발생하느냐는 것입니다.
다양한 Huawei USB 모뎀, 다양한 stty 설정 및 Huawei 모뎀의 기본 설정을 시도했습니다.
Baud rate: 9600 / 115200
Parity: none
Data bits = 8
Stop bits = 1
Flow control = none
test dev # uname -a
Linux test 3.5.7-gentoo #3 SMP Sun Feb 17 04:58:22 EET 2013 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 5200+ AuthenticAMD GNU/Linux
최신 커널 컴파일: 3.6.11-gentoo, 이제 명령을 보낼 때:
echo "AT" > /dev/ttyUSB0
얻은 결과는 다음과 같습니다.
OK
AT
OK
AT
OK
AT
끝나지 않습니다. cat 명령을 종료한 다음 다른 명령을 보냅니다(make call 명령).
echo "ATDT 27789388;" > /dev/ttyUSB0
루프가 없는 고양이에게서 답을 얻었습니다.
systest ~ # cat /dev/ttyUSB0
ATDT 27789388;
OK
그렇다면 tty 터미널이 왜 그렇게 이상하게 동작하는 걸까요? 어쩌면 직렬 포트에서 데이터를 보내고 읽는 것에 대해 아무것도 모르는 걸까요?
도움이 된다면 stty -a -F /dev/ttyUSB0 명령의 출력은 다음과 같습니다.
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
답변1
간단한 쉘 작업을 통한 명령줄에서의 AT 명령 통신은 매우 신뢰할 수 없습니다. 이 프로그램을 사용해 보시길 권합니다아티누트이는 명령줄에서 AT 명령을 실행하기 위해 특별히 작성되었습니다.
$ echo AT | atinout - /dev/ttyUSB0 -
AT
OK
$
답변2
이전에 사용된 "ATE0"
에코 "ATE0" > /dev/ttyUSB0
답변3
모뎀 관리자가 실행 중인지 확인하십시오. 그렇다면 모뎀 관리자를 종료하십시오.
장치가 모뎀이라고 생각하면 개입하여 모뎀에 전화를 겁니다. 이것은 최근에 비슷한 문제를 해결했습니다.
답변4
주문하다:
stty -echo -F /dev/ttyUSB3
나를 위해 일해