如何解决SIM800 - 如何使用 C++ 发送彩信
我有一个项目,我必须通过 sim800 屏蔽在树莓上发送 mms,我一开始用 python 中的程序进行测试,该程序可以工作,但是当我通过 c++ 时,我无法通过.
这里是python中的程序
# coding=utf-8
import serial
import RPi.GPIO as GPIO
import time
#Activation du port série
phone = serial.Serial("/dev/ttyS0",baudrate=9600,timeout=1)
phone.write('AT+CMMSEDIT=0\r')
time.sleep(1)
phone.write('AT+CMMSTERM\r')
time.sleep(1)
phone.write('AT\r\n')
time.sleep(1)
phone.write('AT+CMMSINIT\r\n')
time.sleep(2)
phone.write('AT+CMMSCURL=\"mms1\"\r')
time.sleep(1)
phone.write('AT+CMMSCID=1\r')
time.sleep(1)
phone.write('AT+CMMSPROTO=\"10.151.0.1\",8080\r')
time.sleep(1)
phone.write('AT+CMMSSENDCFG=6,3,2,4,1,0\r')
time.sleep(1)
phone.write('AT+SAPBR=3,\"CONTYPE\",\"GPRS\"\r')
time.sleep(1)
phone.write('AT+SAPBR=3,\"APN\",\"sl2sfr\"\r')
time.sleep(1)
phone.write('AT+SAPBR=1,1\r')
time.sleep(4)
phone.write('AT+SAPBR=2,1\r')
time.sleep(1)
phone.write('AT+CMMSEDIT=1\r')
time.sleep(1)
phone.write('AT+CMMSDOWN=\"PIC\",85102,200000,\"/home/pi/Downloads/bastien.png\"\r')
time.sleep(1)
photo = open ("/home/pi/Downloads/bastien.png","r")
dataphoto = photo.read()
phone.write(dataphoto)
time.sleep(1)
phone.write('\rAT+CMMSRECP=\"+336274xxxx\"\r')
time.sleep(1)
phone.write('AT+CMMSVIEW\r')
time.sleep(1)
phone.write('AT+CMMSSEND\r')
time.sleep(15)
phone.write('AT+CMMSEDIT=0\r')
time.sleep(1)
phone.write('AT+CMMSTERM\r')
time.sleep(1)
photo.close()
这就是我在 C++ 中尝试过的
long lSize;
char * buffer;
size_t result;
int connection=0;
printf("Opening connection \n");
connection = serialOpen("/dev/ttyS0",9600);
delay(1000);
printf("Connection: %d\n",connection);
printf("\n");
serialPuts(connection,"AT+CMMSEDIT=0\r");
delay(1000);
serialPuts(connection,"AT+CMMSTERM\r");
delay(1000);0
delay(1000);
serialPuts(connection,"AT+CMMSINIT\r\n");
delay(1000);
serialPuts(connection,"AT+CMMSCURL=\"mms1\"\r");
delay(1000);
serialPuts(connection,"AT+CMMSCID=1\r");
delay(1000);
serialPuts(connection,"AT+CMMSPROTO=\"10.151.0.1\",8080\r");
delay(1000);
serialPuts(connection,"AT+CMMSSENDCFG=6,0\r");
delay(1000);
serialPuts(connection,"AT+SAPBR=3,\"GPRS\"\r");
delay(1000);
serialPuts(connection,\"sl2sfr\"\r");
delay(1000);
serialPuts(connection,"AT+SAPBR=1,1\r");
delay(1000);
serialPuts(connection,"AT+SAPBR=2,"AT+CMMSEDIT=1\r");
delay(1000);
serialPuts(connection,"AT+CMMSDOWN=\"PIC\",6793,80000,\"mon-image.jpg\"\r");
pFile = fopen ( "/home/pi/Pictures/mon-image.jpg","rb" );
if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
// obtain file size:
fseek (pFile,SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
// allocate memory to contain the whole file:
buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
// copy the file into the buffer:
result = fread (buffer,lSize,pFile);
if (result != lSize) {fputs ("Reading error",stderr); exit (3);}
printf("%s",buffer);
serialPuts(connection,"\rAT+CMMSRECP=\"+33627xxxxxx\"\r");
delay(1000);
serialPuts(connection,"AT+CMMSVIEW\r");
delay(1000);
serialPuts(connection,"AT+CMMSSEND\r");
delay(15000);
serialPuts(connection,"AT+CMMSTERM\r");
delay(1000);
fclose (pFile);
free (buffer);
对于c++,我认为问题出在图像的读取上,但经过多次尝试都无效,我仍然没有解决问题。
谢谢你帮助我
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。