Merhaba,
PIC16F648A ve GL865 GSM modem arasında 2400 baud 8N1 haberleştirme yapıyorum.
Donanımsal bir sorun yok, PIC'ten modeme AT komutları sorunsuz gidiyor ve cevapları yine normal geliyor.
Soruna gelince; Modem içerisine Python kod yüklüyorum ve PIC ile haberleşirken SER modülünü kullanıyorum.
Modemden PIC'e datalar sorunsuz gelmesine rağmen, PIC'ten modeme data gitmiyor veya Python script bunu algılamıyor.
PIC kodları:
BAUD VAR WORD
BAUD=396 ' 2400 BAUD
WAIT_CONNECTED:
SERIN2 RX, BAUD, 60000, WAIT_CONNECTED, [WAIT ("CONNECTED")]
;blink routine
;---------MAIN_LOOP------------
MAIN_LOOP:
SEROUT2 TX, BAUD, ["DEN1",13,10]
PAUSE 100
WAIT_SENT:
SERIN2 RX, BAUD, 60000, WAIT_SENT, [WAIT ("SUCCESS")]
;blink2 routine
GOTO MAIN_LOOP
Python kodları:
import MDM
import MOD
import SER
tx="at#cmuxscr=0\r"
MDM.send(tx,0)
a = MDM.send('AT+IPR=2400\r',2)
MOD.sleep(10)
SER.set_speed('2400','8N1')
MOD.sleep(10)
a = MDM.send('AT&K0\r',2)
MOD.sleep(10)
##########################################
# User defined settings
#########################################
SMSTO = '1234567890' # recipient number for the SMS
SMSTEXT = 'SERTest-28: ' # SMS text
##########################################
# End of User defined settings
##########################################
while (1 == 1):
a = MDM.send('AT+CREG?\r',2)
res = MDM.receive(5)
if (res.find('0,1') != -1) or (res.find('1,1') != -1) or (res.find('0,5') != -1) or (res.find('1,5') != -1):
break
else:
MOD.sleep(10)
SER.send('CONNECTED!\r\n')
x = SER.receive(1000)
a = MDM.send('AT+CMGF=1\r', 2)
res = MDM.receive(5)
MOD.sleep(5)
a = MDM.send('AT+CMGS="' + SMSTO + '"\r', 2)
res = MDM.receive(10)
a = MDM.send(SMSTEXT, 2)
a = MDM.send(x, 2)
a = MDM.sendbyte(0x1A, 2)
SER.send('SUCCESS\r\n')
Kodda görüldüğü gibi SMS içerisinde SMS Textten sonra PIC'ten gelen datayı SMS olarak göndermesi lazım ama SMS'te sadece SERTest-28: geliyor!