AT 명령을 보낼 때 dev/ttyUSB에서 무한 데이터 루프

AT 명령을 보낼 때 dev/ttyUSB에서 무한 데이터 루프

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

나를 위해 일해

관련 정보