Salve ragazzi
sono probabilmente l'ultimo arrivato (mi sono iscritto da qualche minuto) e sono contento di far parte della Vs. comunità.
Arrivo al dunque, è da appena un giorno che sto smanettando con l'ultima versione di Gambas e Il problema che riscontro è con gb.socket (naturalmente gb.net è abilitato).
Seguono soltanto le Sub della connessione e dell'invio su socket.
Public Sub Open_sock() As Boolean
sock.Timeout = 5000
sock.Port = 6000
sock.Host = "192.168.2.18"
sock.Connect()
Do While Net.Searching
If Net.Connected Then
connected = True
Exit
End If
Loop
End
'Qui non ho nessun errore e sicuramente la connessione è avvenuta
Public Sub Txsock()
Dim s As String
s = "$CN2" & Chr(0)
datisock = 1 'questo è un mio flag
Write #sock, s, Len(s) 'Qui ho l'errore: "System Error #32: Pipe interrotta
End
Considerata la Vs. esperienza quale potrebbe essere l'errore?
Naturalmente sock è l'oggetto socket.
Grazie per l'aiuto
Ho modificato la Sub relativa alla connessione e lettura dati, adesso funziona bene:
Public Sub open_sock() As Boolean
sock = New Socket
sock.Timeout = 5000
'sock.Port = Val(FormSetting.portatxt.Text)
'sock.Host = FormSetting.ipservertxt.Text
sock.Connect(FormSetting.ipservertxt.Text, Val(FormSetting.portatxt.Text))
Do While (sock.Status <> 7) And (sock.Status > 0)
Wait 0.1
Loop
connected = True
Catch
Message.Error(Error.Text)
connected = False
End
Public Sub txrxsock()
Dim s As String
s = "$CN2" & Chr(0)
datisock = 1 'flag
Write #sock, s, Len(s)
Do While Lof(sock) = 0
Wait 0.1
Loop
Read #sock, s, Lof(sock)
End
Adesso si connette corretamente e scrive e legge su socket.
Unica cosa adesso è perchè gli eventi non vengono innescati?
Per catturare in automatico i dati in arrivo considerando che il mio oggetto socket è chiamato sock devo mettere:
Public Sub sock_Read()
Mentre per gli Errori:
Public Sub sock_Error()
Però non vengono mai attivate, perchè?
Grazie per i suggerimenti.