gsm sms metni okuma sorunu

Başlatan ts, 07 Aralık 2020, 15:40:02

ts

Merhabalar, sms okumada aşağıdaki kodları kullanıyorum sorun yok. Android telefonla geliştirmeyi yaptım. Sonra iphone ile deneme yapınca string başlangıç adresi 30 iken 34 oluyor. Gsm no adresi 5 aynı. Anlam veremedim nerede hata yapıyorum.

Kullandığım modül quectel m95. Aynı kod yapısıyla fibocom 510 ile çalıştığımda da string başlangıcı 28 oluyor ama android iphone mesaj metinleri 28 aynı.

Sms okumada böyle bir sorunla karşılaşan oldu mu?

Dim GSMNO[12] As Byte
Dim MESAJ[8]  As Byte 
Dim SAY  As Byte

main:
p10:
HSerOut ["ATX",13,10] 
HSerIn 1000,p10,[Wait("OK")]

p11:
HSerOut ["AT+CMGF=1",13,10] 
HSerIn 1000,p11,[Wait("OK")]

p12:
HSerOut["AT+CPMS=",34,"SM",34,13,10]
HSerIn 1000,p12,[Wait("OK")]

plist:
HSerOut["AT+CMGL=",34,"ALL",34,13,10] 'SMSLER LİSTELENİYOR...
'HSerIn 5000,plist,[Wait("REC UNREAD"),skip 5,Str GSMNO\12,skip 34,Str MESAJ\9] 'IPHONE 34
HSerIn 5000,plist,[Wait("REC UNREAD"),skip 5,Str GSMNO\12,skip 30,Str MESAJ\9] 'ANDROİD 30 
HSerOut [26]

For SAY=0 To 11
  GSMNO[SAY]=GSMNO[SAY]-48
Next
For SAY=0 To 8
  MESAJ[SAY]=MESAJ[SAY]-48
Next

Cls
Print At 1,1,"SMS GSM NO:" ' GSM NO SATIRI
Print At 2,1,#GSMNO[0],#GSMNO[1],#GSMNO[2],#GSMNO[3],#GSMNO[4],#GSMNO[5],#GSMNO[6],#GSMNO[7],#GSMNO[8],#GSMNO[9],#GSMNO[10]  'GSM NO SATIRI
DelayMS 2000  ' GSM NO SATIRI

Cls
Print At 1,1,"MESAJ:"
Print At 2,1,#MESAJ[0],#MESAJ[1],#MESAJ[2],#MESAJ[3],#MESAJ[4],#MESAJ[5],#MESAJ[6],#MESAJ[7]
DelayMS 2000

Cls
Print At 1,1,"MESAJLAR"       
Print At 2,1,"SiLiNiYOR..." 
HSerOut ["AT+CMGD=1,4",13,10]
DelayMS 1500

goto main

kantirici

Merhaba,

Sabit bir yeri referans almayın. Mesaj içeriğinin kaçıncı virgülden sonra başladığına bakın, mesajınız o indexten sonra başlayacaktır.

oguztkn

Alıntı yapılan: ts - 07 Aralık 2020, 15:40:02Merhabalar, sms okumada aşağıdaki kodları kullanıyorum sorun yok. Android telefonla geliştirmeyi yaptım. Sonra iphone ile deneme yapınca string başlangıç adresi 30 iken 34 oluyor. Gsm no adresi 5 aynı. Anlam veremedim nerede hata yapıyorum.

Kullandığım modül quectel m95. Aynı kod yapısıyla fibocom 510 ile çalıştığımda da string başlangıcı 28 oluyor ama android iphone mesaj metinleri 28 aynı.

Sms okumada böyle bir sorunla karşılaşan oldu mu?

Dim GSMNO[12] As Byte
Dim MESAJ[8]  As Byte 
Dim SAY  As Byte

main:
p10:
HSerOut ["ATX",13,10] 
HSerIn 1000,p10,[Wait("OK")]

p11:
HSerOut ["AT+CMGF=1",13,10] 
HSerIn 1000,p11,[Wait("OK")]

p12:
HSerOut["AT+CPMS=",34,"SM",34,13,10]
HSerIn 1000,p12,[Wait("OK")]

plist:
HSerOut["AT+CMGL=",34,"ALL",34,13,10] 'SMSLER LİSTELENİYOR...
'HSerIn 5000,plist,[Wait("REC UNREAD"),skip 5,Str GSMNO\12,skip 34,Str MESAJ\9] 'IPHONE 34
HSerIn 5000,plist,[Wait("REC UNREAD"),skip 5,Str GSMNO\12,skip 30,Str MESAJ\9] 'ANDROİD 30 
HSerOut [26]

For SAY=0 To 11
  GSMNO[SAY]=GSMNO[SAY]-48
Next
For SAY=0 To 8
  MESAJ[SAY]=MESAJ[SAY]-48
Next

Cls
Print At 1,1,"SMS GSM NO:" ' GSM NO SATIRI
Print At 2,1,#GSMNO[0],#GSMNO[1],#GSMNO[2],#GSMNO[3],#GSMNO[4],#GSMNO[5],#GSMNO[6],#GSMNO[7],#GSMNO[8],#GSMNO[9],#GSMNO[10]  'GSM NO SATIRI
DelayMS 2000  ' GSM NO SATIRI

Cls
Print At 1,1,"MESAJ:"
Print At 2,1,#MESAJ[0],#MESAJ[1],#MESAJ[2],#MESAJ[3],#MESAJ[4],#MESAJ[5],#MESAJ[6],#MESAJ[7]
DelayMS 2000

Cls
Print At 1,1,"MESAJLAR"      
Print At 2,1,"SiLiNiYOR..." 
HSerOut ["AT+CMGD=1,4",13,10]
DelayMS 1500

goto main

Bir dönem bende uğraşmıştım gsm modül ile ama benim kullandığım sim800l idi. Android de sorun olmuyor ama iphone 'lar da mesajın başına sabit 4 ya da 5 karakter ekliyor. 7 Plus'ta ve 5s'te denenmişti. Sanırım iphone 'lara özel bir durum. Gelen mesajın içeriğinin tamamını string olarak bir yere yazdırabilirseniz daha rahat görmüş olursunuz.

ts

Stringi 4*20 lcdye aktardım ve dediğiniz gibi iphone 4 değer fazla sms gönderiyor. En iyisi kantirici'nin dediği gibi sabit değer yerine sms formatındaki virgül veya tırnakları sayıp mesaj başını bulmak.

fide

Farklı telefonlardan gönderilen smsleri paylaşabilir misiniz?
Bir yol yöntem bulunur elbet.

Python yada başka yüksek seviyeli bir dil olsa iş biraz daha kolay olurdu ama mcu üzerinde de bir çözüm bulunur. Ya fazla gelen karakter görmezden gelinir, yada /, $, #, &, @, %, ~ gibi normalde yazılmayan spesifik bir karakterle başlayan textler gönderilir.

Belirli bir işi yaptırmak için gerekli komutu belirlemek sizin elinizde sanırım.

Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com