紧急求COM口发SMS短信的VC程序ing!谢谢~ AT+CMGS = +8613********* > your messageOK.你需要一个硬件,一个serial port control class , 一个主程序等等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 串口的操作我试过了。对NOKIA手机很多情况下都不好用。有好用的源程序吗?或控件? 这个其实和你的手机硬件没有太大关系,手机肯定是做好得,用不用AT指令看spec。用AT指令的话,其实就是serial port control 编程了。bless BOOL gsmSendMessage(const SM_PARAM* pSrc){ int nPduLength; // PDU串长度 unsigned char nSmscLength; // SMSC串长度 int nLength; // 串口收到的数据长度 char cmd[16]; // 命令串 char pdu[512]; // PDU串 char ans[128]; // 应答串 nPduLength = gsmEncodePdu(pSrc, pdu); // 根据PDU参数,编码PDU串 strcat(pdu, "\x01a"); // 以Ctrl-Z结束 gsmString2Bytes(pdu, &nSmscLength, 2); // 取PDU串中的SMSC信息长度 nSmscLength++; // 加上长度字节本身 // 命令中的长度,不包括SMSC信息长度,以数据字节计 sprintf(cmd, "AT+CMGS=%d\r", nPduLength / 2 - nSmscLength); // 生成命令 TRACE("%s", cmd); TRACE("%s\n", pdu); WriteComm(cmd, strlen(cmd)); // 先输出命令串 nLength = ReadComm(ans, 128); //★★★ 读应答数据 可这里是0 // 根据能否找到"\r\n> "决定成功与否 if(nLength == 4 && strncmp(ans, "\r\n> ", 4) == 0) { WriteComm(pdu, strlen(pdu)); // 得到肯定回答,继续输出PDU串 nLength = ReadComm(ans, 128); // 读应答数据 // 根据能否找到"+CMS ERROR"决定成功与否 if(nLength > 0 && strncmp(ans, "+CMS ERROR", 10) != 0) { return TRUE; } } return FALSE;} jslisong(碧螺春)您看这里是怎么回事啊? ReadComm(ans, 128);不是你写的吧?里面timeout设了多少研究一把。 串口太简单了,就是API调用,我举个例子:设备:实达100-B无线Modem例子已发送 这些都不是我写的。 我是下载的高手的。int ReadComm(void* pData, int nLength){ DWORD dwNumRead; // 串口收到的数据长度 ReadFile(hComm, pData, (DWORD)nLength, &dwNumRead, NULL); return (int)dwNumRead;} COMMTIMEOUTS timeouts = { // 串口超时控制参数 100, // 读字符间隔超时时间: 100 ms 1, // 读操作时每字符的时间: 1 ms (n个字符总共为n ms) 500, // 基本的(额外的)读超时时间: 500 ms 1, // 写操作时每字符的时间: 1 ms (n个字符总共为n ms) 100}; // 基本的(额外的)写超时时间: 100 ms对不对了。 外面用个死循环等到 serial有回音。再加个计数,时间太长了就fail quit。能明白吗?比较傻的办法,我经常用,赫赫。 各位,对不起了.我的信箱我写错了.应是:[email protected] [email protected]yintongshun(踏雪有痕) 能不能重发一下.谢了!! jslisong(碧螺春)谢谢您,我先试试吧. 通过mic得到了声音信号,并通过快速傅里叶变化,但要怎么分析得到的数据呀 请问各位大牛一个简单的关于图片加载的问题 弱问:dll中可不可以设置模态对话框? 谁能解释这句C++语句上是什么语意。 声明全局变量 是否 必须 在前面 加 const ?? SDI与MDI在编程中的区别?视和文档呢? 如何编译、配置、调用 DCOM?在 ATL 中 在什么情况下会调用基类的operator = VS2010+OPENCV MFC中的CInternetSession中假死情况,救命!! 询问简单技巧: 怎样用shortcut 能在 switch 的case之间切换。 找C或C++开发合作伙伴
对NOKIA手机很多情况下都不好用。
有好用的源程序吗?或控件?
用AT指令的话,其实就是serial port control 编程了。bless
{
int nPduLength; // PDU串长度
unsigned char nSmscLength; // SMSC串长度
int nLength; // 串口收到的数据长度
char cmd[16]; // 命令串
char pdu[512]; // PDU串
char ans[128]; // 应答串 nPduLength = gsmEncodePdu(pSrc, pdu); // 根据PDU参数,编码PDU串
strcat(pdu, "\x01a"); // 以Ctrl-Z结束 gsmString2Bytes(pdu, &nSmscLength, 2); // 取PDU串中的SMSC信息长度
nSmscLength++; // 加上长度字节本身 // 命令中的长度,不包括SMSC信息长度,以数据字节计
sprintf(cmd, "AT+CMGS=%d\r", nPduLength / 2 - nSmscLength); // 生成命令 TRACE("%s", cmd);
TRACE("%s\n", pdu); WriteComm(cmd, strlen(cmd)); // 先输出命令串 nLength = ReadComm(ans, 128); //★★★ 读应答数据 可这里是0 // 根据能否找到"\r\n> "决定成功与否
if(nLength == 4 && strncmp(ans, "\r\n> ", 4) == 0)
{
WriteComm(pdu, strlen(pdu)); // 得到肯定回答,继续输出PDU串 nLength = ReadComm(ans, 128); // 读应答数据 // 根据能否找到"+CMS ERROR"决定成功与否
if(nLength > 0 && strncmp(ans, "+CMS ERROR", 10) != 0)
{
return TRUE;
}
} return FALSE;
}
您看这里是怎么回事啊?
里面timeout设了多少研究一把。
设备:实达100-B无线Modem
例子已发送
int ReadComm(void* pData, int nLength)
{
DWORD dwNumRead; // 串口收到的数据长度 ReadFile(hComm, pData, (DWORD)nLength, &dwNumRead, NULL);
return (int)dwNumRead;
}
COMMTIMEOUTS timeouts = { // 串口超时控制参数
100, // 读字符间隔超时时间: 100 ms
1, // 读操作时每字符的时间: 1 ms (n个字符总共为n ms)
500, // 基本的(额外的)读超时时间: 500 ms
1, // 写操作时每字符的时间: 1 ms (n个字符总共为n ms)
100}; // 基本的(额外的)写超时时间: 100 ms
对不对了。
能明白吗?比较傻的办法,我经常用,赫赫。
我的信箱我写错了.
应是:[email protected]
[email protected]
yintongshun(踏雪有痕)
能不能重发一下.
谢了!!
谢谢您,
我先试试吧.