📄 handy.c
字号:
/*############################################################################
Copyright: Radig Ulrich mailto: mail@ulrichradig.de
Author: Radig Ulrich
Remarks:
known Problems: none
Version: 28.05.2004
Description:
############################################################################*/
#include <main.h>
#include <handy.h>
//############################################################################
//Routine f黵 die Serielle Ausgabe
int uart_putchar (char c){
//############################################################################
if (c == '\n')
uart_putchar('\r');
//Warten solange bis Zeichen gesendet wurde
while(!(USR & (1<<UDRE)));
//Ausgabe des Zeichens
UDR = c;
return (0);
};
//############################################################################
//Routine f黵 die Serielle Ausgabe
int uart_getchar (void){
//############################################################################
while(!(USR & (1<<RXC)));
return(UDR);
};
//############################################################################
//Routine f黵 die Serielle Ausgabe
void uart_clear (void){
//############################################################################
unsigned char a;
for (char c=0;c<10;c++){
a = UDR;
}
};
//############################################################################
//INstallation der Seriellen Schnittstelle
void Handy_Init (void){
//############################################################################
//Enable TXEN im Register UCR TX-Data Enable
UCR=(1 << TXEN | 1<<RXEN);
//Teiler wird gesetzt
UBRR=(SYSCLK / (BAUD_RATE * 16L) - 1);
//鰂fnet einen Kanal f黵 printf (STDOUT)
fdevopen (uart_putchar, uart_getchar);
};
//############################################################################
void Handy_Time ( unsigned char *year,unsigned char *month,
unsigned char *day,unsigned char *hour,
unsigned char *minute,unsigned char *secound){
//############################################################################
unsigned char tmp[30];
unsigned int var[5];
uart_clear();
printf("at+cclk?\r\n");
gets(tmp);
scanf("+CCLK: \"%2d/%2d/%2d,%2d:%2d:%2d+ \"\r\n",&var[0],&var[1],
&var[2],&var[3],
&var[4],&var[5]);
*year = var[0];
*month = var[1];
*day = var[2];
*hour= var[3];
*minute = var[4];
*secound = var[5];
};
//############################################################################
char Send_SMS (char* zielnummer,char* nachricht){
//############################################################################
unsigned char tmp1 = 0;
unsigned char tmp2 = 1;
unsigned char tmp3 = 0;
unsigned char tmp4 = 0;
unsigned char nachrichtneu[49];
unsigned char zielnummerneu[16];
unsigned char shift = 0;
//erzeugen des Nachrichten Strings
while (nachricht[tmp1] != 0){
nachrichtneu[tmp2] = (nachricht[tmp1]&0x7F)>>shift;
if (shift != 0){
nachrichtneu[tmp2-1] |= (nachricht[tmp1]&((1<<shift)-1))<<(8-shift);
};
shift++;
tmp1++;
if (shift == 8){
shift=0;
}
else{
tmp2++;
};
};
nachrichtneu[0]= tmp1;
//erzeugen des Ziehlnummern Strings
while (zielnummer[tmp3] !=0){
tmp4 = zielnummer[tmp3+1];
zielnummerneu[tmp3+1] = zielnummer[tmp3];
if (tmp4 == 0){
zielnummerneu[tmp3] = 'F';
tmp3=tmp3 + 2;
zielnummerneu[tmp3] = 0x0;
break;
};
zielnummerneu[tmp3] = tmp4;
tmp3=tmp3 + 2;
zielnummerneu[tmp3] = 0x0;
};
//Senden der Endg黮tigen SMS ans Handy
printf("at+cmgs=%i\r\n",(tmp2+(tmp3/2)+0x07));
while(uart_getchar()!=' ');
//Adresse des zu verwendenden SMSC (optional)
printf("0791947101670000");
//Header1
printf("113C");
//Ziehlnummer
if(zielnummerneu[tmp3-2] =='F'){
tmp3--;
};
printf("%02X91",tmp3);
printf(zielnummerneu);
//Header2
printf("0000A8");
//Senden Nachrichten String
for (tmp1 = 0;tmp1<tmp2;tmp1++){
printf("%02X", nachrichtneu[tmp1]);
};
printf("%c",0x1a);
gets(nachrichtneu);
gets(nachrichtneu);
if(nachrichtneu[0]=='+'){
return (0);
};
return (1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -