CorryWestSide
Member
Here Log when i plug-in and try to start a communication with my otg - USBToIrDa
i have the error when i try to send START
LOG:
Manufacturer : ARKMICRO ������������������������������������
Product : USB TO IRDA ��������������������������������������
Serial : not available
DeviceName : /dev/bus/usb/001/014
DeviceClass : USB_CLASS_PER_INTERFACE (per-interface basis)
DeviceSubClass : 0
Device ID : 0x3F6
ProductId : 0x3118
VendorId : 0x18EC
B4aInterfaceNumber : 0
InterfaceClass : USB_CLASS_VENDOR_SPEC (vendor specific)
InterfaceSubClass : 0
InterfaceProtocol : 0
EndpointNumber : 1
EndpointDirection : In
EndpointType : USB_ENDPOINT_XFER_INT (interrupt)
EndpointAttribute : 3
EndpointInterval : 1
EndpointMaxPacketSize : 4
EndpointNumber : 2
EndpointDirection : out
EndpointType : USB_ENDPOINT_XFER_BULK (bulk)
EndpointAttribute : 2
EndpointInterval : 0
EndpointMaxPacketSize : 64
EndpointNumber : 2
EndpointDirection : In
EndpointType : USB_ENDPOINT_XFER_BULK (bulk)
EndpointAttribute : 2
EndpointInterval : 0
EndpointMaxPacketSize : 64
Device Name: /dev/bus/usb/001/014
Device ID : 0x3F6
ProductId : 0x3118
VendorId : 0x18EC
Impostata USB con Driver_Silabs
USB Connessa
InputStream: anywheresoftware.b4a.objects.UsbSerial$1@c4d977b
OutputStream: anywheresoftware.b4a.objects.UsbSerial$2@5532998
asstream1 inizializzato
Messaggio START inviato
Error: java.io.IOException: Error writing 8 bytes at offset 0 length=8
Messaggio START inviato
Error: java.io.IOException: Error writing 8 bytes at offset 0 length=8
Dati Output in attesa: 0
Full Code About my app:
#Region Project Attributes
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName:
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#FullScreen: True
#IncludeTitle: True
#End Region
#BridgeLogger: True
'Obbiettivo dell'applicazione:
'Sarà un'app di test volta alla creazione di un codice di comunicazione di una chiavetta DONGLE USB IRDA
'che manderà messaggi in formato DDCMP
'passi apparentemente da seguire:
'-Collegare usb al device e riconoscerne il VID e PID [FATTO MEDIANTE CODICE JAVA]
'-Costruire un messaggio in formato DDCMP
'-Mandare il messagigo costruito mediante la comunicazione della USB To IRDA collegata al Modulo Irda nelle vicinanze
'-stampare i risultati
Sub Process_Globals
Private xui As XUI
End Sub
Sub Globals
Private btnTest As Button
Private btnsetting As Button
Private txtaudit As EditText
Private Thread_1 As Thread
Dim screen As PreferenceScreen
Dim baudrate As String
Dim Maxbaudrate As String
Dim manager As PreferenceManager
Dim timeout As String
Dim usb1 As UsbSerial
Dim astreams1 As AsyncStreams
End Sub
Sub Activity_Create(FirstTime As Boolean)
If FirstTime Then
CreatePreferenceScreen
If manager.GetAll.Size = 0 Then SetDefaults
End If
Activity.LoadLayout("Layout")
Thread_1.Initialise("Thread_1")
End Sub
Sub Activity_Resume
HandleSettings
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Private Sub btnsetting_Click
StartActivity(screen.CreateIntent)
End Sub
Public Sub StartTest
Dim device As Int = 1
Dim info As String
Dim deviceName As String
Dim deviceId As String
Dim productId As String
Dim vendorId As String
'Guida BaudRate "2400", "4800", "9600", "19200", "38400", "57600", "115200"
'Controllo se è presente un dispositivo USB
If usb1.UsbPresent(device) = usb1.USB_NONE Then : Msgbox("Nessuna USB-IrDa Rilevaya, Collegane una e riprova", "Attenzione") : Return : End If
'mi da errore con: DRIVER_CDCACM | DRIVER_PROLIFIC
'non da errore con: DRIVER_FTDI | DRIVER_SILABS
'con DRIVER_SILABS ha inviato ma da questo errore: Error: java.lang.NullPointerException: Attempt to invoke interface method 'int com.hoho.android.usbserial.driver.UsbSerialDriver.read(byte[], int)' on a null object reference
'usb1.SetCustomDevice(usb1.DRIVER_SILABS, 0x66F , 0x4200) modello y60 worka ma Error: java.lang.NullPointerException: Attempt to invoke interface method 'int com.hoho.android.usbserial.driver.UsbSerialDriver.read(byte[], int)' on a null object reference
'usb1.SetCustomDevice(usb1.DRIVER_SILABS, 0x18EC, 0x3118) UsbToIrda worka ma Error: java.lang.NullPointerException: Attempt to invoke interface method 'int com.hoho.android.usbserial.driver.UsbSerialDriver.read(byte[], int)' on a null object reference
'Se è presente, ne verifico i permessi
If (usb1.HasPermission(device)) Then
' Stampare VID e PID ed eventuali altre informazioni
info = usb1.DeviceInfo(device)
Log(info)
deviceName = ExtractValue(info, "DeviceName : ")
deviceId = ExtractValue(info, "Device ID : ")
productId = ExtractValue(info, "ProductId : ")
vendorId = ExtractValue(info, "VendorId : ")
Log("Device Name: " & deviceName)
Log("Device ID : " & deviceId)
Log("ProductId : " & productId)
Log("VendorId : " & vendorId)
If(productId = "0x4200" And vendorId == "0x66f") Then
usb1.SetCustomDevice(usb1.DRIVER_SILABS, 0x66F, 0x4200)
Log("Impostata USB con Driver_Silabs")
End If
If(productId = "0x3118" And vendorId == "0x18EC") Then
usb1.SetCustomDevice(usb1.DRIVER_SILABS, 0x18EC, 0x3118)
Log("Impostata USB con Driver_Silabs")
End If
If usb1.Open(baudrate,1) <> usb1.USB_NONE Then
Log("USB Connessa")
'inizializzo lo Stream
Log("InputStream: " & usb1.GetInputStream)
Log("OutputStream: " & usb1.GetOutputStream)
astreams1.Initialize(usb1.GetInputStream, usb1.GetOutputStream, "astreams1")
Else
Log("Errore nella connessione della USB")
End If
Else
usb1.RequestPermission(device)
Return
End If
'Configurare i parametri seriali
usb1.SetParameters(baudrate, usb1.DATABITS_8, usb1.STOPBITS_1, usb1.PARITY_NONE)
'Messaggio da inviare
Dim START() As Byte
START = Array As Byte(0x05, 0x06, 0x40, 0x00, 0x08, 0x01, 0x5B, 0x95)
If(Not(astreams1.IsInitialized)) Then
Log("asstream1 non inizializzato, impossibile inviare il msg")
Return
Else
Log("asstream1 inizializzato")
usb1.UsbTimeout = 1000
If(astreams1.OutputQueueSize == 0) Then
astreams1.Write(START)
Log("Messaggio START inviato")
Sleep(1000)
astreams1.Write(START)
Log("Messaggio START inviato")
Sleep(1000)
Thread_1.Interrupt
If(Thread_1.IsInterrupted) Then Log("thread_1 Interrotto")
End If
Log("Dati Output in attesa: " & astreams1.OutputQueueSize)
End If
End Sub
'usando la UsbSerial usb1(As UsbSerial) devo:
Sub btnTest_Click
If(Thread_1.IsInitialized) Then Thread_1.Start(Null, "StartTest",Null)
End Sub
Sub Astreams1_NewData (Buffer() As Byte)
Dim receivedData As String = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
Log("Dati ricevuti: " & receivedData)
End Sub
Sub Astreams1_DataAvailable (Buffer() As Byte)
Dim receivedData As String = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
Log("Dati ricevuti: " & receivedData)
End Sub
Sub AStreams1_Error
Log("Error: " & LastException.Message)
'Log("Connessione Terminata per errore: " & LastException.Message)
'astreams1.Close
End Sub
Sub Astreams1_Terminated
Log("Terminated")
astreams1.Close
End Sub
Sub SetDefaults
manager.SetString("start_baud_rate_string", "2400")
manager.SetString("max_baud_rate_string", "115200")
manager.SetString("timeout_string", "500")
baudrate = manager.GetString("start_baud_rate_string")
Maxbaudrate = manager.GetString("max_baud_rate_string")
timeout = manager.GetString("timeout_string")
PrintInfo
End Sub
Sub CreatePreferenceScreen
'BAUD RATE [115200,19200,2400,38400,4800,57600,9600]
Dim moduleSettings As PreferenceCategory
screen.Initialize("", "")
moduleSettings.Initialize("")
moduleSettings.AddEditText("security_string","Security","DDCMP security code","") 'SECURITY CODE FOR DDCMP
moduleSettings.AddEditText("password_string","Password","DDCMP password code","") 'PASSWORD CODE FOR DDCMP
moduleSettings.AddEditText("timeout_string","timeout","START timeout","") 'timeout for start message
moduleSettings.AddList("max_baud_rate_string", "Max Baud", "Default", "Default", _
Array As String("Default", "2400", "4800", "9600", "19200", "38400", "57600", "115200"))
moduleSettings.AddList("start_baud_rate_string", "Start Baud", "Default", "Default", _
Array As String("Default", "2400", "4800", "9600", "19200", "38400", "57600", "115200"))
screen.AddPreferenceCategory(moduleSettings)
End Sub
Sub HandleSettings
baudrate = manager.GetString("start_baud_rate_string")
Maxbaudrate = manager.GetString("max_baud_rate_string")
timeout = manager.GetString("timeout_string")
manager.SetString("start_baud_rate_string", baudrate)
manager.SetString("max_baud_rate_string" , Maxbaudrate)
manager.SetString("timeout_string" , timeout)
PrintInfo
End Sub
Sub PrintInfo
Log("BaudRate " & baudrate)
Log("Max BaudRate " & Maxbaudrate)
Log("Start TimeOut " & timeout)
End Sub
Sub ExtractValue(info As String, label As String) As String
Dim startPos As Int = info.IndexOf(label) + label.Length
Dim endPos As Int = info.IndexOf2(Chr(10), startPos) ' Cerca la fine della riga
If endPos = -1 Then endPos = info.Length ' Se non trova il termine, prende tutto fino alla fine
Return info.SubString2(startPos, endPos).Trim
End Sub
i have the error when i try to send START