我正在使用低端uC的某些嵌入式系统,即Atmega128。
我的系统还包括通过AT命令驱动的调制解调器。我试图寻找任何合适的C库(用于GCC),但是找不到任何库。尽管我知道将所有可能的AT命令集放入uC内存中,因此拥有“通用”库是不合理的(整个操作只需要30条命令),但我只需要获取一些合适的命令(例如,轻量级,健壮的)控制机制,用于处理uC中发送和接收的UART字符串。
有人知道任何经过验证的库或函数吗?也许有人可以指出一些好的资源/建议?
最佳答案
我希望您可能将此用于GSM或GPRS Modem接口,前提是您尚未指定应用程序。
简介: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++;
}
在情监侦中
__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++;
}
检查msgindex和换行符以了解收到的响应。
关于gcc - 用于连接微 Controller 和AT调制解调器的C库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15095935/