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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...