저는 저가의 uC, 즉 Atmega128을 사용하는 일부 임베디드 시스템에서 작업하고 있습니다. 내 시스템에는 AT 명령을 통해 구동되는 모뎀도 포함됩니다. 적절한 C 라이브러리 (GCC 용)를 찾으려고했으나 찾을 수 없습니다. 가능한 모든 AT 명령을 uC 메모리에 넣고 "범용"라이브러리를 사용하는 것이 불합리하다는 것을 알고 있지만 (단지 전체 작업을 위해 약 30 개의 명령이 필요합니다), 필자는 적절한 (예 : ) 경량 , robust) uC에서 송수신 된 UART 문자열을 처리하기위한 제어 메커니즘. 입증 된 라이브러리 또는 기능을 아는 사람이 있습니까? 아니면 누군가가 좋은 리소스/제안을 가르쳐 줄 수 있습니까?마이크로 컨트롤러와 AT 모뎀을 연결하기위한 C 라이브러리
3
A
답변
0
응용 프로그램을 지정하지 않았다고 가정하고 GSM 또는 GPRS 모뎀 인터페이스에이 기능을 사용하기를 바랍니다.
간략한 설명 : GSM, GPRS 모뎀은 외부 컨트롤러와 통신하기 위해 AT 명령 인터페이스를 사용하고 있습니다.
는 http://ww1.microchip.com/downloads/en/AppNotes/01373A.pdf
void UART_Buf(void)
{
ch=SCI2D;
if(rx_buffer[2] == 'O' && rx_buffer[3] =='K')
{
rx_buffer[5] = '\0';
msgindex=2; // code for OK
rx_wr_i=0;
}
if(rx_buffer[2] == 'B' && rx_buffer[3] =='U' && rx_buffer[4] == 'S' && rx_buffer[5] =='Y')
{
msgindex=3; // Code for Busy
rx_wr_i=0;
}
if(rx_buffer[2] == 'N' && rx_buffer[3] =='O' && rx_buffer[4] == ' ' && rx_buffer[5] =='C' && rx_buffer[6] =='A' && rx_buffer[7] =='R'&& rx_buffer[8] =='R' && rx_buffer[9] =='I' && rx_buffer[10] =='E' && rx_buffer[11] =='R')
{
msgindex=3; // Code for No Carrier
rx_wr_i=0;
}
if(rx_buffer[2] == 'E' && rx_buffer[3] =='R' && rx_buffer[4] == 'R' && rx_buffer[5] =='O' && rx_buffer[6] =='R')
{
msgindex=4; // Code for Error
rx_wr_i=0;
}
if(rx_buffer[2]=='+' && rx_buffer[3]=='C' && rx_buffer[4] == 'M' && rx_buffer[5] =='S')
{
msgindex=3;
}
if(rx_buffer[2]=='+' && rx_buffer[3]=='C' && rx_buffer[4] == 'M' && rx_buffer[5] =='E')
{
msgindex=3;
}
if(rx_buffer[2]=='+' && rx_buffer[3]=='C' && rx_buffer[4] == 'M' && rx_buffer[5] =='G' && rx_buffer[6]== 'R')
{
msgindex=6;
}
if(rx_buffer[2]=='E' && rx_buffer[3]=='R' && rx_buffer[4] == 'R' && rx_buffer[5] =='O' && rx_buffer[6] == 'R')
{
msgindex=3;
}
if(rx_buffer[2]=='+' && rx_buffer[3]=='C' && rx_buffer[4] == 'S' && rx_buffer[5] =='Q')
{
msgindex=7;
}
if(rx_buffer[2]=='+' && rx_buffer[3]=='C' && rx_buffer[4] == 'O' && rx_buffer[5] =='L'&& rx_buffer[6] =='P')
{
msgindex=8;
}
if(ch == '\r')
linefeed++;
}
에 응답을 알 수 msgindex 및 라인 피드수신 ISR
__interrupt void isrVsci2rx(void)
{
SCI2S1_RDRF = 0;
rx_buffer[rx_ack++]= SCI2D;
if(rx_ack>RX_BUFFER_MASK)
rx_ack=0;
UART_Buf();
rx_length++;
}
검사에 대한 자세한 설명을 참조하십시오.
관련 문제
- 1. AT 명령을 사용하여 GSM 모뎀을 디버그하십시오.
- 2. iOS/Objective-C : POP3에 연결하기위한 라이브러리
- 3. Pyserial 마이크로 컨트롤러와 호스트 통신
- 4. 마이크로 컨트롤러와 인터페이스 바코드 스캐너
- 5. 마이크로 컨트롤러와 마이크로 프로세서간에 바이트 순서 문제가 있습니까?
- 6. 블루투스를 통해 마이크로 컨트롤러와 안드로이드 통신
- 7. 릴레이 컨트롤러와 마이크로 컨트롤러의 차이점은 무엇입니까?
- 8. DSP/마이크로 컨트롤러와 PC 애플리케이션 간의 인터페이스
- 9. 마이크로 컨트롤러에서 모뎀으로 보내지는 AT 명령은 무시됩니다
- 10. USB 모뎀을 사용하여 AT 명령으로 대량 메시지를 보냅니다.
- 11. AT 명령을 사용하여 ZTE MF637U 모뎀을 사용하여 SMS를 수신합니다.
- 12. easyPic v7 마이크로 컨트롤러와 초음파 센서 hc-sr04 인터페이스 방법
- 13. C 언어로 AT 명령을 사용하는 방법
- 14. AT 명령 PHP
- 15. AT 명령 : AT + CMGR 잘 작동하지만 AT + CMGL GSM 모뎀에서 응답이 없습니다.
- 16. C++ * and & at
- 17. 마이크로 컨트롤러와 별도로 전원이 공급되는 PCB (전자 장치) 간의 통신
- 18. USB를 통해 안드로이드 타블렛으로 8051 마이크로 컨트롤러와 인터페이스하기
- 19. 웹 인터페이스를 통해 마이크로 컨트롤러와 통신하는 방법은 무엇입니까?
- 20. LPC1788 마이크로 컨트롤러와 함께 사용할 수있는 좋은 RTOS가 무엇입니까?
- 21. C++ 두 개의 마이크로 녹음
- 22. 모뎀을 구성하는 방법은 무엇입니까?
- 23. GPS 장치를 연결하기위한 C# TCP 서버
- 24. C# 캡처 마이크로
- 25. C++ 마이크로 커널 문제
- 26. C# 시간 (마이크로 초)
- 27. GSM 모뎀을 통한 SMS 수신
- 28. Bugzilla에 연결하기위한 .NET API
- 29. Hayes AT 명령 : 원격 끊기 감지?
- 30. Fortran C++ 링크 라이브러리
RS-232 인터페이스와 대화하고 싶습니까? 이미이 기능을 갖추고 있으며 UART 문자열을 캡처해야합니까? –
UART에 대한 도움이 필요하지 않습니다. 이미 작동하고 있습니다. 프로그램 디자인에 대한 도움이 필요해. :) – TomiL
AT 명령어 세트와 프로토콜은 간단합니다. 코드를 직접 작성하십시오. – Clifford