| 
 
中级会员  
 
	积分396金钱396 注册时间2015-1-23在线时间42 小时 | 
 
 发表于 2016-8-11 11:30:39
|
显示全部楼层 
| //图像采集任务//设置任务优先级 #define CAMERA_TASK_PRIO                               4
 //设置任务堆栈大小
 #define CAMERA_STK_SIZE                                  512
 //任务堆栈
 OS_STK CAMERA_TASK_STK[CAMERA_STK_SIZE];
 //任务函数
 void CAMERA_task(void *pdata);
 
 //彩信
 void CAMERA_task(void *pdata)
 {
 while(1)
 {
 if(send_flag2==0x0f)
 {
 send_flag2=0x00;
 SIM900_MMC();
 BEEP_BL(100);
 }
 delay_ms(10);
 }
 }
 
 void SIM900_MMC(void)
 {
 
 SendCmm2("AT\r",4);
 delay_ms1(500);
 SendCmm2("AT\r",4);
 delay_ms1(500);
 SendCmm2("AT+CMMSINIT\r",13);
 delay_ms1(500);
 SendCmm2("AT+CMMSCURL=\"mmsc.monternet.com\"\r",36);
 delay_ms1(500);
 SendCmm2("AT+CMMSCID=1\r",14);
 delay_ms1(500);
 SendCmm2("AT+CMMSPROTO=\"10.0.0.172\",80\r",32);
 delay_ms1(500);
 SendCmm2("AT+CMMSSENDCFG=6,3,0,0,2,4\r",28);
 delay_ms1(500);
 SendCmm2("AT+SAPBR=3,1,\"Contype\",\"GPRS\"\r",35);
 delay_ms1(500);
 SendCmm2("AT+SAPBR=3,1,\"APN\",\"CMWAP\"\r",32);
 delay_ms1(500);
 SendCmm2("AT+SAPBR=1,1\r",14);
 delay_ms1(1000);
 SendCmm2("AT+SAPBR=2,1\r",14);
 delay_ms1(500);
 SendCmm2("AT+CMMSEDIT=1\r",15);
 delay_ms1(500);
 jpg_upload(PIC_BUFFER);//彩信图片数据
 delay_ms1(8000);
 SendCmm2("AT+CMMSRECP=\"18789415361\"\r",29);
 delay_ms1(500);
 SendCmm2("AT+CMMSSEND\r",13);
 delay_ms1(12000);
 SendCmm2("AT+CMMSEDIT=0\r",15);
 delay_ms1(500);
 SendCmm2("AT+SAPBR=0,1\r",14);
 delay_ms1(500);
 SendCmm2("AT+CMMSTERM\r",13);
 delay_ms1(5000);
 }
 
 void jpg_upload(u8 PIC_BUFFER[])
 {
 u8 ID;
 unsigned int y,D;
 u8 i,temp;
 i=0;
 ID=0x00;
 D=1;
 GETJPG();
 delay_ms1(1000);
 do
 {
 L=0;
 y=4;
 dynamic_ID(ID);//ID的初始值为0,ID是为了统计一共传了多少包数据
 delay_ms1(200);
 //打包数据
 if(L==134)//说明接收到刚好一包数据(00 00占二个字节,80 00占二个字节,一包数据占128个字节,校验和占一个字节 00(包尾,固定的一直是00)占一个字节总共134个数据,说明接收到刚好一包数据
 {
 for(i=0;i<128;i++)
 {
 packet_data_buffer[i]=PIC_BUFFER[y];
 if(PIC_BUFFER[y-1]==0xFF&&PIC_BUFFER[y]==0xD9){D=0;break;}  //0xFF,0xD9  EOI(end of image)。jpge图片结束标记
 y++;
 }
 SendCmm2(packet_data_buffer,128);
 delay_ms1(100);
 }
 if(L<134)
 {
 for(i=0;i<128;i++)
 {
 packet_data_buffer[i]=PIC_BUFFER[y];
 if(PIC_BUFFER[y-3]==0xFF&&PIC_BUFFER[y-2]==0xD9){D=0;break;}
 temp=i;//注意:这里的temp是为了记录当遇到图片结束位即FF D9时i的值,如果i=130说明数据包刚好为128个字节,那么此时L=134是上面那种情况(此时的
 y++;
 }
 SendCmm2(packet_data_buffer,temp);
 delay_ms1(100);
 }         ID++;
 }while(D==1);  //当D=0时跳出while循环。
 }
 
 void GETJPG()
 {
 int PIClength;
 u8 SYNC_ID[]={0xAA,0x0D,0x00,0x00,0x00,0x00};//连接
 u8 CAM_ACK[]={0xAA,0x0E,0x0D,0x00,0x00,0x00}; //应答
 u8 CAM_PIXEL[]={0xAA,0x01,0x00,0x07,0x07,0x03};//分辨率
 u8 CAM_PACKAGE_SIZE[]={0xAA,0x06,0x08,0x86,0x00,0x00};//包大小02为512字节FF为整个图片
 u8 CAM_COMP[]={0xAA,0x05,0x00,0x00,0x00,0x00};//压缩图片
 u8 CAM_GET_IMAGE[]={0xAA,0x04,0x01,0x00,0x00,0x00};//获得相片
 int i;
 CAMERON=1;
 delay_ms1(500);
 for(i=0;i<38;i++) //主机与 GXT-M201 建立连接 主机发出同步请求 ( 波特率为 115200bps) 后 , 等待接收 GXT-M201 的应答
 //(通常需要发出 1-2 次同步请求就可收到应答)。
 //注意:最多发送60次同步请求
 {
 SendCmm5(SYNC_ID,6);delay_ms1(50);
 if(RET==0xAA)  //说明接收到应答了,当接收到应答后跳出
 {L=0; break;}
 }
 SendCmm5(CAM_ACK,6);
 delay_ms1(50);
 SendCmm5(CAM_PIXEL,6);
 delay_ms1(50);
 SendCmm5(CAM_PACKAGE_SIZE,6);
 delay_ms1(50);
 SendCmm5(CAM_COMP,6);
 delay_ms1(1000);
 L=0;
 SendCmm5(CAM_GET_IMAGE,6);
 delay_ms1(1000);
 PIClength=PIC_BUFFER[10]*256+PIC_BUFFER[9];
 AT_CMMSDOWN[18]=PIClength/1000+0x30;
 AT_CMMSDOWN[19]=PIClength%1000/100+0x30;
 AT_CMMSDOWN[20]=PIClength%100/10+0x30;
 AT_CMMSDOWN[21]=PIClength%10+0x30;
 for (i=18;i<22;i++)
 {MMS_PIC_Num[i]=AT_CMMSDOWN[i];}
 //彩信文本
 SendCmm2("AT+CMMSDOWN=\"TEXT\",22,3000\r",30);//发送彩信文本大小
 delay_ms1(500);
 SendCmm2(MMS_PIC_Num,24);
 delay_ms1(2000);
 //彩信图片
 SendCmm2(AT_CMMSDOWN,32);//发送彩信图片大小
 delay_ms1(500);
 
 }
 
 void SendCmm5(u8 *cmd,int t)      //串口1发送命令
 {
 int i;
 
 FLAG=0x00;
 for(i=0;i<t;i++)
 {
 sendchar5(cmd[i]);
 delay_us(5);
 FLAG=i;
 }
 }
 void sendchar5(u8 c)
 {
 UART5->DR=c;
 while((UART5->SR&0x40)==0);
 }
 
 u8 CAM_IMAGE_ID[]={0xAA,0x0E,0x00,0x00,0x00,0x00};//相片ID号
 //相片ID定义函数//
 void dynamic_ID(u8 IDD)
 {
 
 //  IDD=IDD-1;
 
 CAM_IMAGE_ID[4]=IDD;
 SendCmm5(CAM_IMAGE_ID,6);
 
 }
 
 
 执行了这个任务后,不能切换到别的任务,卡在了这个任务,大神能不能帮看一看?
 
 | 
 |