📄 m32.lst
字号:
C51 COMPILER V7.50 M32 04/04/2007 15:01:44 PAGE 18
1035 1 pSrc += 2; // 指针后移
1036 1
1037 1 gsmString2Bytes(pSrc, (unsigned char*)&TP_DCS, 2); // 取编码方式(TP-DCS)
1038 1 pSrc += 2; // 指针后移
1039 1 gsmSerializeNumbers(pSrc, TP_SCTS, 14); // 服务时间戳字符串(TP_SCTS)
1040 1 pSrc += 14; // 指针后移
1041 1 gsmString2Bytes(pSrc, &tmp, 2); // 用户信息长度(TP-UDL)
1042 1 pSrc += 2; // 指针后移
1043 1
1044 1
1045 1 if(TP_DCS == GSM_7BIT)
1046 1 {
1047 2 // 7-bit解码
1048 2 nDstLength = gsmString2Bytes(pSrc, ans, tmp & 7 ? (int)tmp * 7 / 4 + 2 : (int)tmp * 7 / 4);
1049 2 // 格式转换
1050 2 gsmDecode7bit(ans, TP_UD, nDstLength);
1051 2
1052 2 putstring1("TP_UD=\r\n");
1053 2 putstring1(TP_UD);
1054 2 putstring1("\r\n");
1055 2
1056 2
1057 2 // 转换到TP-DU
1058 2 nDstLength = tmp;
1059 2 }
1060 1 else if(TP_DCS == GSM_UCS2)
1061 1 {
1062 2 #if 0
// UCS2解码
nDstLength = gsmString2Bytes(pSrc, ans, tmp * 2); // 格式转换
nDstLength = gsmDecodeUcs2(ans, TP_UD, nDstLength); // 转换到TP-DU
#endif
1067 2 }
1068 1 else
1069 1 {
1070 2 // 8-bit解码
1071 2 nDstLength = gsmString2Bytes(pSrc, ans, tmp * 2); // 格式转换
1072 2 //nDstLength = gsmDecode8bit(ans, TP_UD, nDstLength); // 转换到TP-DU
1073 2 }
1074 1
1075 1
1076 1 //返回目标字符串长度
1077 1 return nDstLength;
1078 1 }
1079
1080
1081 int gsmDeleteSms(int xdata index)
*** WARNING C258 IN LINE 1081 OF M32.C: 'index': mspace on parameter ignored
1082 {
1083 1 int xdata n;
1084 1 ClearBuf(ans,256);
1085 1 sprintf(ans,"AT+CMGD=");
1086 1 sprintf(cmd,"%d",index);
1087 1 strcat(ans,cmd);
1088 1 strcat(ans,"\r\n");
1089 1
1090 1 putstring1(ans);
1091 1 putstring1("\r\n");
1092 1
1093 1 SysTimer=_10_SEC;
1094 1 while(SysTimer)
1095 1 {
C51 COMPILER V7.50 M32 04/04/2007 15:01:44 PAGE 19
1096 2 ATSend(ans);
1097 2 ReadSerail(ans, 128, &n,5);
*** WARNING C214 IN LINE 1097 OF M32.C: 'Argument': conversion: pointer to non-pointer
1098 2 if((strstr(ans,"OK"))!= NULL) return 1;
1099 2 ATSend("AT\r\n");
1100 2 delay_ms(20);
1101 2 }
1102 1
1103 1 }
1104
1105
1106
1107
1108
1109
1110
1111
1112 /*********************************************************************************************************
-*****
1113
1114 GSM_IO10: L->H-L,H=40-50 ms,wake up MCU,and gsm set IO11 to low.
1115 GSM_ROW4: ,Wake up GSM.
1116
1117
1118 Host to GSM: check GSM sleep? if yes,Host pull low GSM_ROW4 to low 50 ms,at once send AT command.
1119 **********************************************************************************************************
-****/
1120 // SM station
1121 // MS Me
1122 /*********************************************************************************************************
-********
1123 1.设置短消息中心号码: AT+CSCA="+8613800755500" <CR>. (地区不同,设置不同)
1124 2.设置短消息格式: AT+CMGF=0<CR> (0==PDU mode)
1125 3.设置短消息存放的位置: AT+CPMS="SM"<CR> (SM表示将短消息存放在SIM卡中)
1126 4.设置短消息到达通知: AT+CNMI=1,1,0,0,1<CR> (此命令可以使GSM模块在短消息到达后向MCU发送指
-令:AT+CMTI:"SM",INDEX<CR>)
1127
1128 **********************************************************************************************************
-*******/
1129 void gsmModule_init(void)
1130 {
1131 1
1132 1
1133 1 GSM_PWON=HIGH;
1134 1 delay_ms(5);
1135 1 GSM_PWON=LOW;
1136 1 delay_ms(200); //Over 120 ms,M32 power on.
1137 1 GSM_PWON=HIGH;
1138 1 delay_ms(200);
1139 1
1140 1 putbyte('A');
1141 1 putbyte('T');
1142 1 putbyte('\r');
1143 1
1144 1 gsm_task = 0;
1145 1 AlarmFlag = FALSE;
1146 1 SysTimer=20;
1147 1 while(SysTimer);
1148 1
1149 1 //
1150 1
1151 1
C51 COMPILER V7.50 M32 04/04/2007 15:01:44 PAGE 20
1152 1 putbyte('A');
1153 1 putbyte('T');
1154 1 putbyte('\r');
1155 1 SysTimer=20;
1156 1 while(SysTimer);
1157 1
1158 1 putstring1("\r\n");
1159 1 putstring1("Reset GSM Module OK!\r\n");
1160 1 //AlarmFlag = 1;
1161 1 //sprintf(cmd, "ATD13554997942;\r\n"); // 生成命令
1162 1 //putstring(cmd); // 先输出命令串
1163 1 ClearBuf(SCA,16);
1164 1
1165 1 }
1166
1167
1168
1169
1170 void HangUpCall(void)
1171 {
1172 1
1173 1 //sprintf(cmd, "AT+CHUP\r\n"); // 生成命令
1174 1 ATSend("ATH\r\n"); // 生成命令
1175 1
1176 1 }
1177
1178
1179 void RecieveCall(void) //接电话,回应呼叫
1180 {
1181 1
1182 1 sprintf(cmd, "ATA\r\n"); // 生成命令
1183 1 putstring(cmd); // 先输出命令串
1184 1
1185 1
1186 1 }
1187
1188
1189 void Recall(void)
1190 {
1191 1 sprintf(cmd, "ATDL\r\n"); // 生成命令
1192 1 putstring(cmd); // 先输出命令串
1193 1
1194 1
1195 1 }
1196
1197
1198
1199
1200 //int xdata gpsWait;
1201
1202
1203 uchar gsmMain(void)
1204 {
1205 1 int i,n;
1206 1 unsigned char nSmscLength; // SMSC串长度
1207 1 uchar xdata* ptr;
1208 1
1209 1
1210 1 if(GPSTimerReq==TRUE)
1211 1 {
1212 2 if(GPSTimer30==0)
1213 2 {
C51 COMPILER V7.50 M32 04/04/2007 15:01:44 PAGE 21
1214 3 GPSTimer30=_30_SEC;
1215 3 gsm_task = 40;
1216 3
1217 3 }
1218 2
1219 2
1220 2 }
1221 1
1222 1
1223 1
1224 1 switch(gsm_task)
1225 1 {
1226 2 case 0:
1227 2 ATSend("AT\r");
1228 2 ReadSerail(ans, 128, &n,5);
*** WARNING C214 IN LINE 1228 OF M32.C: 'Argument': conversion: pointer to non-pointer
1229 2 if(strstr(ans,"\r\nOK")==NULL)
1230 2 {
1231 3 putbyte('\r');
1232 3 delay_ms(200);
1233 3 break;
1234 3 }
1235 2
1236 2 putstring1("\r\n");
1237 2 putstring1("Start Debug GSM:\r\n");
1238 2
1239 2
1240 2 gsmInitPhoneBook();
1241 2
1242 2
1243 2 #if 0
gsmDeletePhone(1);
//gsmPhoneBookTask(GSM_DELET_PHONE,NULL,NULL,1);
ATSend("AT+CPBF=\"GWM\"\r");
ReadSerail(ans, 256, &n,5);
putstring1(ans);
putstring1("\r\n");
#endif
1252 2 gsm_task++;
1253 2 break;
1254 2
1255 2 case 1:
1256 2 if(strlen(SCA))
1257 2 {
1258 3 gsm_task++;
1259 3 break;
1260 3 }
1261 2 putstring1("Read SMC:\r\n");
1262 2 //读短消息中心号码:
1263 2 ATSend("AT+CSCA?\r");
1264 2 ReadSerail(ans, 128, &n,5);
*** WARNING C214 IN LINE 1264 OF M32.C: 'Argument': conversion: pointer to non-pointer
1265 2 if((strstr(ans, "+CSCA: ")) == NULL)
1266 2 {
1267 3 putbyte('\r');
1268 3 delay_ms(20);
1269 3 break;
1270 3 }
1271 2 if((ptr=strstr(ans, "\"+")) == NULL)
1272 2 {
1273 3 putbyte('\r');
C51 COMPILER V7.50 M32 04/04/2007 15:01:44 PAGE 22
1274 3 delay_ms(20);
1275 3 break;
1276 3
1277 3 }
1278 2 else
1279 2 {
1280 3 ptr +=2; //skip '"+'
1281 3 if(strncpy(SCA,ptr,16) != NULL) //SCA[]="+8613800755500"
1282 3 {
1283 4 for(i=0;i<16;i++)
1284 4 {
1285 5 if((SCA[i]=='\"') && (SCA[i+1]==',') )
1286 5 {
1287 6 S
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -