Sub 4d_write_str_old(byval 4d_str_indx As Byte , Byval 4d_string_tmp As String )
'*******************************************************************************
'Syntax: Call 4d_write_str_old(index hex value , "your text" )
'The body of the command is:
'comand_code+ string_index+ string_length + string + xorcrc
'For more info refer to Visi Genie reference manual page 8 section 3.1.3.3
'*******************************************************************************
Local Index_help_a As Byte 'used to calculate the length of the string
Dim Tot_command_len As Byte 'total command length
Tot_command_len = Len(4d_string_tmp) + 4 'total = string + string length byte + command byte + string index byte used for calculating crc
Print #debug_port , "total command length =" ; Tot_command_len
4d_string_tx = 4d_string_tmp 'copy the string in to variable overlaid at array
4d_string_tx_arr(1) = Write_str '&h02 write string command
4d_string_tx_arr(2) = 4d_str_indx 'index of the string
4d_string_tx_arr(3) = Len(4d_string_tmp) 'length of the original string
For Index_help_a = 1 To Tot_command_len -1 'we need to xor this and assign at the end
'the minus (-)1 skip xor of the null termination
4d_string_tx_arr(tot_command_len) = 4d_string_tx_arr(tot_command_len) Xor 4d_string_tx_arr(index_help_a)
Next Index_help_a
Index_help_a = 0
Select Case Tot_command_len ' total command length
Case 5:
Printbin #debug_port , 4d_string_tx_arr(1) ; 5 'code +string index+ string length + 1 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 5 'code +string index+ string length + 1 char + crc
Case 6:
Printbin #debug_port , 4d_string_tx_arr(1) ; 6 'code +string index+ string length + 2 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 6 'code +string index+ string length + 2 char + crc
Case 7:
Printbin #debug_port , 4d_string_tx_arr(1) ; 7 'code +string index+ string length + 3 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 7 'code +string index+ string length + 3 char + crc
Case 8:
Printbin #debug_port , 4d_string_tx_arr(1) ; 8 'code +string index+ string length + 4 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 8 'code +string index+ string length + 4 char + crc
Case 9:
Printbin #debug_port , 4d_string_tx_arr(1) ; 9 'code +string index+ string length + 5 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) , 9 'code +string index+ string length + 5 char + crc
Case 10:
Printbin #debug_port , 4d_string_tx_arr(1) ; 10 'code +string index+ string length + 6 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 10 'code +string index+ string length + 6 char + crc
Case 11:
Printbin #debug_port , 4d_string_tx_arr(1) ; 11 'code +string index+ string length + 7 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 11 'code +string index+ string length + 7 char + crc
Case 12:
Printbin #debug_port , 4d_string_tx_arr(1) ; 12 'code +string index+ string length + 8 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 12 'code +string index+ string length + 8 char + crc
Case 13:
Printbin #debug_port , 4d_string_tx_arr(1) ; 13 'code +string index+ string length + 9 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 13 'code +string index+ string length + 9 char + crc
Case 14:
Printbin #debug_port , 4d_string_tx_arr(1) ; 14 'code +string index+ string length + 10 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 14 'code +string index+ string length + 10 char + crc
Case 15:
Printbin #debug_port , 4d_string_tx_arr(1) ; 15 'code +string index+ string length + 11 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 15 'code +string index+ string length + 11 char + crc
Case 16:
Printbin #debug_port , 4d_string_tx_arr(1) ; 16 'code +string index+ string length + 12 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 16 'code +string index+ string length + 12 char + crc
Case 17:
Printbin #debug_port , 4d_string_tx_arr(1) ; 17 'code +string index+ string length + 13 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 17 'code +string index+ string length + 13 char + crc
Case 18:
Printbin #debug_port , 4d_string_tx_arr(1) ; 18 'code +string index+ string length + 14 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 18 'code +string index+ string length + 14 char + crc
Case 19:
Printbin #debug_port , 4d_string_tx_arr(1) ; 19 'code +string index+ string length + 15 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 19 'code +string index+ string length + 15 char + crc
Case 20:
Printbin #debug_port , 4d_string_tx_arr(1) ; 20 'code +string index+ string length + 16 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 20 'code +string index+ string length + 16 char + crc
Case 21:
Printbin #debug_port , 4d_string_tx_arr(1) ; 21 'code +string index+ string length + 17 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 21 'code +string index+ string length + 17 char + crc
Case 22:
Printbin #debug_port , 4d_string_tx_arr(1) ; 22 'code +string index+ string length + 18 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 22 'code +string index+ string length + 18 char + crc
Case 23:
Printbin #debug_port , 4d_string_tx_arr(1) ; 23 'code +string index+ string length + 19 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 23 'code +string index+ string length + 19 char + crc
Case 24:
Printbin #debug_port , 4d_string_tx_arr(1) ; 24 'code +string index+ string length + 20 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 24 'code +string index+ string length + 20 char + crc
Case 25:
Printbin #debug_port , 4d_string_tx_arr(1) ; 25 'code +string index+ string length + 21 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 25 'code +string index+ string length + 21 char + crc
Case 26:
Printbin #debug_port , 4d_string_tx_arr(1) ; 26 'code +string index+ string length + 22 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 26 'code +string index+ string length + 22 char + crc
Case 27:
Printbin #debug_port , 4d_string_tx_arr(1) ; 27 'code +string index+ string length + 23 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 27 'code +string index+ string length + 23 char + crc
Case 28:
Printbin #debug_port , 4d_string_tx_arr(1) ; 28 'code +string index+ string length + 24 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 28 'code +string index+ string length + 24 char + crc
Case 29:
Printbin #debug_port , 4d_string_tx_arr(1) ; 29 'code +string index+ string length + 25 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 29 'code +string index+ string length + 25 char + crc
Case 30:
Printbin #debug_port , 4d_string_tx_arr(1) ; 30 'code +string index+ string length + 26 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 30 'code +string index+ string length + 26 char + crc
Case 31:
Printbin #debug_port , 4d_string_tx_arr(1) ; 31 'code +string index+ string length + 27 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 31 'code +string index+ string length + 27 char + crc
Case 32:
Printbin #debug_port , 4d_string_tx_arr(1) ; 32 'code +string index+ string length + 28 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 32 'code +string index+ string length + 28 char + crc
Case 33:
Printbin #debug_port , 4d_string_tx_arr(1) ; 33 'code +string index+ string length + 29 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 33 'code +string index+ string length + 29 char + crc
Case 34:
Printbin #debug_port , 4d_string_tx_arr(1) ; 34 'code +string index+ string length + 30 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 34 'code +string index+ string length + 30 char + crc
Case 35:
Printbin #debug_port , 4d_string_tx_arr(1) ; 35 'code +string index+ string length + 31 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 35 'code +string index+ string length + 31 char + crc
Case 36:
Printbin #debug_port , 4d_string_tx_arr(1) ; 36 'code +string index+ string length + 32 char + crc
Printbin #lcd_4d , 4d_string_tx_arr(1) ; 36 'code +string index+ string length + 32 char + crc
End Select
ACK_NACK_flag.0 = 1 'ACK flag set to busy
While ACK_NACK_flag <> 0 'while waiting for response from the display
Incr 4d_wait_count 'just to idicate how long will this take
Call 4d_uart_rx 'check the Uart
if ACK_NACK_flag.1 = 1 then 'NAK received form the display
Printbin #lcd_4d , 4d_arr_tx(1) ; 4 ' reapet previous transmision
ACK_NACK_flag.1 = 0 'Clear NACK flag and check again for ACK or NACK
end if
Wend
'Printbin #lcd_4d , 4d_string_tx_arr(1) , Tot_command_len 'code +string index+ string length + 1 char + crc
Debug 4d_string_tx_arr(1) , Tot_command_len 'code +string index+ string length + 1 char + crc
4d_wait_count = 0
End Sub |