当前位置:首页 » 编程语言 » c语言发送短信
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言发送短信

发布时间: 2022-01-13 09:39:19

❶ 求用单片机AT89C51控制TC35i发送短信的c语言程序!急!!!!

smc.c:
// Header: tc35操作函数
// File Name: TC35.C
// Author: 兴创科技

#include "hardware.h"
#include "SMS.h"

extern uchar numbuff[];

void delay(uint m) //延时m*0.2ms
{
uchar n;
for(;m>0;m--)
for(n=100;n>0;n--);
}

void Sendcmd(uchar *p) //发送AT命令
{
while(*p)
{
SBUF=*(p++);
while(TI==0);
TI=0;
}
}

void Sendchar(uchar c) //发送一个字符
{
TI=0;
SBUF=c;
while(TI==0);
TI=0;
}

void Init_tc35(void) //判断是否连接TC35
{
uint i=0xffff;
rcount=0;
receive_ok=0;
Sendcmd("AT\r\n");
while(receive_ok==0)
{
i--;
if(i==0) //超时还未响应则返回
{
rcount=0;
receive_ok=0;
return;
}
}
receive_ok=0;
rcount=0;
delay(4000);
i=0xffff;

Sendcmd("AT&F\r\n"); //初始化
while(receive_ok==0)
{
i--;
if(i==0) //超时还未响应则返回
{
rcount=0;
receive_ok=0;
return;
}
}
receive_ok=0;
rcount=0;
delay(4000);
i=0xffff;

Sendcmd("AT+IPR=4800\r\n"); //设置波特率
while(receive_ok==0)
{
i--;
if(i==0) //超时还未响应则返回
{
rcount=0;
receive_ok=0;
return;
}
}
receive_ok=0;
rcount=0;
delay(4000);
i=0xffff;

Sendcmd("AT+CMGF=1\r\n"); //设置短消息格式
while(receive_ok==0)
{
i--;
if(i==0) //超时还未响应则返回
{
rcount=0;
receive_ok=0;
return;
}
}
receive_ok=0;
rcount=0;
delay(4000);
i=0xffff;

Sendcmd("AT+CSCS="); //设置字符集为“GSM”
Sendchar('"');
Sendcmd("GSM");
Sendchar('"');
Sendchar(0x0D);
Sendchar(0x0A);
while(receive_ok==0)
{
i--;
if(i==0) //超时还未响应则返回
{
rcount=0;
receive_ok=0;
return;
}
}
receive_ok=0;
rcount=0;
tc35_init_ok=1; //全部初始化完毕置标志
}

void Sendsms(uchar *q) //向指定的号码发送短消息
{
ulong i=0x1ffff;
rcount=0; //数据缓冲区指针回0
Sendcmd("AT+CMGS=");
Sendchar('"');
Sendcmd(numbuff);
Sendchar('"');
Sendchar(0x0D);
Sendchar(0x0A);
while(rbuff[rcount-2]!='>')
{
i--;
if(i==0)
{
rcount=0;
receive_ok=0;
return; //超时返回
}
}
Sendcmd(q);
Sendchar(0x1A); //发送短信
Sendchar(0x0D);
Sendchar(0x0A);

receive_ok=0;
i=0x5fffff; //发送短消息超时处理发送等待5s比较安全
while(receive_ok==0)
{
i--;
if(i==0) //超时还未响应则返回
{
rcount=0;
receive_ok=0;
return;
}
}
receive_ok=0;
rcount=0;
}

smc.h

// Header: tc35头文件
// File Name: SMS.H
// Author: Yoran
// Date: 2008/05/12

#ifndef __SMS_H__
#define __SMS_H__

#include <reg52.H>
#include <hardware.H>

extern uchar idata rbuff[];
extern uchar data databuff[];
extern uchar rcount;
extern bit tc35_init_ok;
extern bit receive_ok;
extern bit new_sms;

void Init_tc35(void); //判断是否连接TC35
void Sendcmd(uchar *cmd); //发送AT命令
void Sendchar(uchar c); //发送一个字符
void Sendsms(uchar *q); //向指定的号码发送短消息

#endif

main.c

// Header: XC-TC35短信猫测试程序
// File Name: 发送英文短信.C
// Author: 兴创科技
// P2^4---//发短信
#include <reg52.h>
#include <string.h>
#include "hardware.h"
#include "sms.h"
#include "sms.c"

//LCD Start
uchar code table[]="Welcome...." ;
uchar code table1[]="No:1 is ON" ;
uchar code table2[]="No:2 is ON" ;
uchar code table3[]="No:1 2 are ON" ;
uchar i;
//以下三个是定义LCD的引脚
sbit lcden=P2^2; //6
sbit lcdwrite=P2^1; //5
sbit lcdrs=P2^0;//4

//lcd的写指令
void write_com(uchar com)
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
//lcd的写数据
void write_data(uchar da)
{
lcdrs=1;
lcden=0;
P0=da;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
//初始化
void init()
{
lcdwrite=0;
lcden=0;
write_com(0x38); //16*2显示,5*7点阵,8位数据
write_com(0x0c);//显示开,关光标
write_com(0x06); //移动光标
write_com(0x01);//清除LCD的显示内容

}
//LCD END

uchar idata rbuff[110]; //串口接收数据缓存
uchar numbuff[]="13217832221"; //此处修改为需要接收短信的手机号码,注意要定义为字符串(\0)
uchar databuff[]="000000"; //数据缓存区,注意要定义为字符串(\0)
uchar rcount; //串口接收数据指针

bit tc35_init_ok; //TC35注册成功初始化完成标志
bit receive_ok; //收到模块“ok”标志
bit send_error;
bit send_ok;

void initUart(void)
{ // RXD=1;
//TXD=1;

TMOD=0x20; //T1工作方式2,8位自动重装
SCON=0x40; //串行口工作方式1,8位UTRA
TH1=0xfa;
TL1=0xfa; //波特率发生器,波特率为4800
REN=1; //允许串行接收
TR1=1; //开波特率发生器T1
ES=1; //开串行口中断
EA=1; //开总中断
// R=1;
// T=1;
}

void RECEIVE_DATA(void) interrupt 4 //接收tC35发送的数据并缓存
{
ES=0;
if(RI)
{
rbuff[rcount++]=SBUF;
RI=0;
}
//判断是否接收完毕
if((rbuff[rcount-1]==0x0a)&&(rbuff[rcount-2]==0x0d)&&(rbuff[rcount-3]==0x4b)&&(rbuff[rcount-4]==0x4f))
{ //换行 //回车
receive_ok=1;
}
//判断是否为新短消息指示
if((rbuff[rcount-14]=='C')&&(rbuff[rcount-13]=='M')&&(rbuff[rcount-12]=='T')&&(rbuff[rcount-11]=='I'))
{ //换行
new_sms=1;
}
else new_sms=0;

if(((rbuff[rcount-17]=='C')&&(rbuff[rcount-16]=='M')&&(rbuff[rcount-15]=='G')&&(rbuff[rcount-14]=='S')&&(rbuff[rcount-4]==0x4f)&&(rbuff[rcount-3]==0x4b)&&(rbuff[rcount-2]==0x0d)&&(rbuff[rcount-1]==0x0a))|((rbuff[rcount-16]=='C')&&(rbuff[rcount-15]=='M')&&(rbuff[rcount-14]=='G')&&(rbuff[rcount-13]=='S')&&(rbuff[rcount-4]==0x4f)&&(rbuff[rcount-3]==0x4b)&&(rbuff[rcount-2]==0x0d)&&(rbuff[rcount-1]==0x0a)))
{ //换行
send_ok=1;

}
else send_ok=0;
if((rbuff[rcount-7]=='E')&&(rbuff[rcount-6]=='R')&&(rbuff[rcount-5]=='R')&&(rbuff[rcount-4]=='O')&&(rbuff[rcount-3]=='R'))
{ //换行
send_error=1;
}
else send_error=0;

if(rcount>109)rcount=0;
ES=1;
}

void keyboard()
{
if(!(K1&K2&K3&K4))
{
delay(10);
if(!(K1&K2&K3&K4))
{
if(K1==0)
{
Sendcmd("ATD13217832221;\r\n"); //按键1拨打电话测试语音通话
}
if(K3==0&&K4==0)
{
Sendsms("The Light No:1 and 2 are ON!"); //发送英文短信
write_com(0x01);
delay(30);
for(i=0;i<13;i++) write_data(table3[i]);
delay(2000);delay(2000);delay(2000);delay(2000);delay(2000);
while(K3==0&&K4==0);
}
if(K3==0)
{
Sendsms("The Light No:1 is ON!"); //发送英文短信
write_com(0x01);
delay(30);
for(i=0;i<10;i++) write_data(table1[i]);
delay(2000);delay(2000);delay(2000);delay(2000);delay(2000);
while(K3==0);
}
if(K4==0)
{
Sendsms("The Light No:2 is ON!"); //发送英文短信
write_com(0x01);
delay(30);
for(i=0;i<10;i++) write_data(table2[i]);
delay(2000);delay(2000);delay(2000);delay(2000);delay(2000);
while(K4==0);
}
write_com(0x01);
write_com(0x80+1);
for(i=0;i<11;i++) write_data(table[i]);
rcount=0;

while(!(K1&K2&K3&K4)); //按键释放
}
}
}
void main(void)
{
uchar times=0;
uchar m=0;
tc35_init_ok=0;

init();//LCD
write_com(0x80+1);
for(i=0;i<11;i++) write_data(table[i]);

initUart(); //初始化串口
Init_tc35(); //开启TC35
delay(5000);
delay(5000);
delay(5000);
delay(5000);

while(tc35_init_ok==0) //初始化TC35
{
Init_tc35();
delay(4000);
times++;
if(times>15)
{
times=0;
delay(1000);
delay(500);
delay(1000);
delay(4000);delay(4000);delay(4000);
}
}
if(tc35_init_ok)
{
BEEP=0; //初始化成功鸣叫一声
delay(2000);
BEEP=1;
delay(2000);
BEEP=0;
}
while(1)
{

keyboard();

}

}

❷ 求助C语言或者C++语言手机键盘发短信的编程,...高分悬赏..

自己写不太现实.

❸ 求用单片机控制手机模块发送短信的C语言程序

就是ASCII码额,程序中就是发送该ASCII码对应的16进制数过去就行了,AT+CMGS直接字节可以
strcpy(&TransPt,“AT+CMGS”),AT指令中最后回车对应的我记得好像是0X0D 0X0A,很久之前用过,记不清了

❹ 求一个单片机C语言程序,实现单片机控制Q2358c模块发短信打电话

这个简单,单片机TX,RX和模块的交叉接上,gnd对接上,然后单片机通过串口发送AT指令过去。

❺ 求linux下C语言编程的通信模块实现拨号与收发短信功能的源代码!

你的是 TC35么,直接初始化串口,然后发送At指令AT+CMGC 发送短信AT+CMGR接收短信,然后通过串口查询,看有没有受到Ok,收到了说明发送成功,我这有8051单片机控制Tc35的源码

❻ 急求源码。用c语言模拟实现一个短息的收发。可以简单一点发送就是存储起来,可以实现查看等功能。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
void main(void)
{
FILE *fp;
char txt[500];
int cmd;
int i;
time_t rawtime;
struct tm * timeinfo;
fp = fopen("msg.txt", "a+");
if (NULL==fp)
{
printf("open file error!\n");
return;
}
while (1)
{
printf("输入命令(1:收短信,2:发短信, 0:退出):");
scanf("%d",&cmd);
switch(cmd) {
case 1:
i = 0;
fseek(fp, 0, SEEK_SET); //跳到文件开头
while(NULL !=fgets(txt, 500, fp))
{
i++;
printf("msg[%d]: %s", i, txt);
}
break;
case 2:
fseek(fp, 0, SEEK_END); //从文件结尾开始写入
time ( &rawtime );
timeinfo = localtime ( &rawtime );
asctime (timeinfo);
fprintf (fp, "[%4d-%02d-%02d %02d:%02d:%02d] ",1900+timeinfo->tm_year, 1+timeinfo->tm_mon, \
timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
printf("\n输入命令短信内容(不超过500个字符):");
scanf("%s", txt);
fprintf(fp, "%s\n", txt);
break;
case 0:
fclose(fp);
return; //退出
default:
printf("未定义命令!\n");
break;
}
}
}

❼ C语言短信接口开发,好实现吗

楼上说的是短信模块的开发办法,如果是做监控或者野外的提醒终端 应该可以

目前大部分都是用做应用集成,采用运营商提供的网关接口开发,如速达移动的接口,适合集成到各种应用。 开发挺简单,具体服务商都会提供给你文档和调用代码,具体你可以咨询下sudas

❽ 用单片机控制手机模块发送PDU短信的C语言程序

我想楼主的意思是不是想在单片机的某个输入口上安装的按钮,按钮按下后短信就发出去了。其实这很简单,你要用单片机的串行口跟TC35通讯。首先你先将单片机的波特率定义的和TC35一致,然后根据PDU格式将你要发送的短信内容编码后存放在单片机里,程序检测到控制端电平变化后就调用发送子程序按照AT指令的格式发送就完了。不过这样你只能发送固定内容的短信。

❾ C语言要短信彩信发送接口,求达人指点!北京的!

开发过c调用彩信的

接口要读懂,特别是封装彩信内容时 要读取图片等

具体你可以问问速达移动的技术,他们接口稳定,服务也很好

❿ 求一个用单片机控制gsm模块发送短信的c语言程序,谢谢了

如果只发送ASCII短信的话程序比较简单,发送中文的就比较复杂了。另外,对于不同型号的GSM模块,发送中文短信的程序略有差别,不知你是哪一种需求。