當前位置:首頁 » 編程語言 » 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模塊,發送中文簡訊的程序略有差別,不知你是哪一種需求。