以下代码是通过串口发送AT指令:
atcmd.c:
#include <stdio.h>
#include <string.h>
#include "atcmd.h"
static HANDLE hCom;
static char com_name[32] = {0};
static int BaudRate;
FILE *fp;
int AT_ComOpen()
{
fp = fopen("debug.txt", "w");
fputs("AT_ComOpen:", fp);
fputs(com_name, fp);
fputs("\n", fp);
fclose(fp);
hCom = SerialOpen(com_name, M_ASYNC);
if(!hCom)
{
printf("串口端口打开失败\n");
return -1;
}
SerialSet(hCom, BaudRate);
return 0;
}
int AT_ComClose()
{
SerialClose(hCom);
return 0;
}
int AT_SendCmd(char *cmd, int len)
{
if(SerialSend(hCom, cmd, len, M_ASYNC) <0)
{
printf("SendCmd Failed\n");
return -1;
}
return 0;
}
int AT_RecvData(char *rdata)
{
SerialRecv(hCom, rdata, M_ASYNC);
return 0;
}
static int ConverToUnicode(char *indata, char *outdata)
{
int len = strlen(indata);
int wlen = sizeof(wchar_t)*len;
int i=0;
char buf[1024];
wchar_t *wch = (wchar_t *)malloc(wlen);
memset(wch, 0, wlen);
MultiByteToWideChar(CP_ACP, 0, indata, len, wch, wlen);
memset(buf, 0, sizeof(buf));
for(i=0; i<len; i++)
{
if(wch[i] == 0)
continue;
sprintf(buf+strlen(buf), "%04x", wch[i]);
}
sprintf(outdata, "%02x", strlen(buf)/2);
strcat(outdata, buf);
free(wch);
return 0;
}
static int phonenum_parity_exchange(char *indata, char *outdata)
{
int i=0;
int len = strlen(indata);
char tmp[16];
int ret = len%2;
memset(tmp, 0, sizeof(tmp));
strcpy(tmp, indata);
if(ret != 0) {
strcat(tmp, "f");
len = len + 1;
}
for(i=0; i<len; i+=2)
{
outdata[i] = tmp[i+1];
outdata[i+1] = tmp[i];
}
return 0;
}