以下代码是通过串口发送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;

}