سلام
برنامه بیسیک رو ندارین بزارین...
در ضمن نکات عملی جهت راه اندازی این ماژول رو اگه بگین ممنون میشم...
پ.ن : در ضمن پیام توسط سیم900 دریافت میشه و در سیم کارت ذخیره میشه ولی وقتی رو lCDنمایش میده یکی درست دریافت میشه و دومی AT+CMGR=1 دریافت میشه و پیام سوم متن پیام دومه و پیام چهارم AT+CMGR=2 و ...
مشکل من اینجاس
چه کنم که هر پیام بدرستی دریافت بشه
متن برنامه :
کد:
'Micro & Crystal Config---------------------------------------------------------
$regfile "m32def.dat"
$crystal = 12000000
'UART Config--------------------------------------------------------------------
$baud = 9600
Config Serialout = Buffered , Size = 254
Config Serialin = Buffered , Size = 254
'LCD Config---------------------------------------------------------------------
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portb.7
Config Lcd = 16 * 2
'INT Config-------------------------------------------------------------------------------
Config Int0 = Falling
Enable Int0
On Int0 Receive_int
'-------------------------------------------------------------------------------
Enable Interrupts
'OutPuts-------------------------------------------------------------------------------
Config Portc.0 = Output : Rl_1 Alias Portc.0 : Reset Rl_1
Config Portc.1 = Output : Rl_2 Alias Portc.1 : Reset Rl_2
Config Portc.2 = Output : Rl_3 Alias Portc.2 : Reset Rl_3
Config Portc.3 = Output : Rl_4 Alias Portc.3 : Reset Rl_4
Config Portc.7 = Output : Rl_7 Alias Portc.7 : Reset Rl_7
'Keypad-------------------------------------------------------------------------
Config Kbd = Porta
'Subs---------------------------------------------------------------------------
Declare Sub Keypad_read()
Declare Sub Send_uart()
Declare Sub Receive_int()
Declare Sub Show_lcd()
'Values-------------------------------------------------------------------------------
Dim State As Byte
Dim Lcd_text_l1 As String * 16 , Lcd_text_l2 As String * 16 , Wait_time As Word , Show_p As Bit
Dim Key_press_check As Byte , Key_press As Bit , Key_num As Byte , Keypad_key_number As Byte , Receive_call_number As Byte
Dim Uart_in As Byte , Receive_message As String * 70 , Message_max As Byte , Message_end As Byte , Sim_cell As Byte
Dim Analysis_value_byte As Byte , Analysis_value_string As String * 10
Dim Old_key As Byte , Key_character_number As Byte , Key_character As String * 1 , Keypad_message As String * 16
Dim Send_message As String * 16 , Send_number As String * 11
Dim Keypad_message_length As Byte
'Print "AT&F"
'Waitms 1000
'Print "AT"
'Waitms 1000
'Delete Simcard Old SMS#########################################################
Receive_call_number = 1
Print "AT+CMGD=0,4"
Cls
Waitms 10
Locate 1 , 1 : Lcd "Delete SIM SMS:"
Waitms 100
Call Receive_int()
'Delete Simcard Old SMS=Ok or NOT Ok############################################
Message_delete:
If Receive_message = "OK" Then
Locate 2 , 1 : Lcd " "
Locate 2 , 1 : Lcd "OK..."
Else
Locate 2 , 1 : Lcd " "
Locate 2 , 1 : Lcd "Error..."
Do
Waitms 100
Loop
End If
Waitms 1000
Receive_call_number = 0
'Print "AT+CMGF=1"
'Waitms 1000
'Print "AT+CNMI=1,1"
'Waitms 1000
'Print "ATE0&W"
'Waitms 1000
State = 1
Do
'###############################################
If State = 1 Then
If Show_p = 0 Then
Lcd_text_l1 = "Wait for receive"
Lcd_text_l2 = "SMS..."
Wait_time = 50
Call Show_lcd()
End If
'###############################################
Elseif State = 2 Then
If Show_p = 0 Then
Lcd_text_l1 = "SMS receive:"
Wait_time = 50
Call Show_lcd()
End If
End If
'###############################################
Loop
End
Sub Send_uart()
'###################################
Print "AT+CMGS=" ; Chr(34) ; "09150731548" ; Chr(34)
Waitms 10
'###################################
A:
Waitms 10
Receive_message = Waitkey()
If Receive_message <> ">" Then Goto A
Print Send_message ; Chr(26)
Waitms 1000
Call Receive_int()
Waitms 10
Call Receive_int()
End Sub
Sub Receive_int()
'###################################
Again:
Receive_message = ""
Message_max = 0
Message_end = 0
'###################################
Do
'###################################
Uart_in = Inkey()
Waitms 10
'###################################
If Uart_in <> 0 Then
Select Case Uart_in
Case 13 : If Receive_message <> "" Then Exit Do
Case 10 : If Receive_message <> "" Then Exit Do
Case Else
Receive_message = Receive_message + Chr(uart_in)
Incr Message_max
If Message_max > 70 Then Exit Do
End Select
'###################################
Elseif Uart_in = 0 And Receive_message <> "" Then
Incr Message_end
'###################################
End If
'###################################
If Message_end > 2 Then Exit Do
Loop
If Receive_message = "OK" Then
'###################################
If Receive_call_number = 1 Then
Goto Message_delete
'###################################
Else
Goto Again
'###################################
End If
End If
'###################################
Analysis_value_string = Mid(receive_message , 4 , 2)
Analysis_value_byte = Checksum(analysis_value_string)
If Analysis_value_byte = 157 Then
Analysis_value_string = Mid(receive_message , 13 , 1)
Sim_cell = Val(analysis_value_string)
Print "AT+CMGR=" ; Str(sim_cell)
Waitms 10
Goto Again
'###################################
Elseif Analysis_value_byte = 153 Then
Goto Again
'###################################
Elseif Analysis_value_byte = 154 Then
Lcd_text_l1 = "SMS Sent..."
Lcd_text_l2 = "Success..."
Wait_time = 2000
Call Show_lcd()
'###################################
Else
'###################################
If Receive_message = "RL1234-ON" Then
Set Rl_1
Waitms 10
Set Rl_2
Waitms 10
Set Rl_3
Waitms 10
Set Rl_4
'###################################
Elseif Receive_message = "RL1234-OFF" Then
Reset Rl_1
Waitms 10
Reset Rl_2
Waitms 10
Reset Rl_3
Waitms 10
Reset Rl_4
'###################################
Elseif Receive_message = "RL1-ON" Then
Set Portc.7
Send_message = "r1on"
Send_uart
Elseif Receive_message = "RL1-OFF" Then
Reset Rl_1
Elseif Receive_message = "RL2-ON" Then
Set Rl_2
Elseif Receive_message = "RL2-OFF" Then
Reset Rl_2
Elseif Receive_message = "RL3-ON" Then
Set Rl_3
Elseif Receive_message = "RL3-OFF" Then
Reset Rl_3
Elseif Receive_message = "RL4-ON" Then
Set Rl_4
Elseif Receive_message = "RL4-OFF" Then
Reset Rl_4
End If
'###################################
Lcd_text_l2 = Receive_message
State = 2
Wait_time = 1000
Show_p = 0
'###################################
End If
'###################################
End Sub
Sub Show_lcd()
Show_p = 1
Cls
Waitus 500
Locate 1 , 1 : Lcd Lcd_text_l1
Locate 2 , 1 : Lcd Lcd_text_l2
Waitms Wait_time
End Sub