rocruss (Normal User)
Newbie
Messaggi: 6
Iscritto: 26/03/2009
|
Devo inviare ad una stampa etichette attraverso una socket, un file contenente le informazioni di un etichetta. Purtroppo sono costretto ad usare vb.net 2002 e il framework 1.1. Finora per fare lo stesso lavoro ho usato un programma in vb6 utilizzando gli appositi OCX Winsock. Con vb.net 2002 come faccio ad ottenere la stessa prestazione? Ho trovato un mucchio di codice bellissimo e funzionante che apre chiude e invia tramite socket, ma quando cerco d'indirizzare la stampa etichette, nessuno di questi ha funzionato. Qualcuno ha idea di cosa occorre fare?
marco
Ultima modifica effettuata da rocruss il 26/03/2009 alle 14:30 |
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
ma che codice hai usato che non funziona?
cmq secondo me dovresti:
1)aprire uno stream al file da trasferire
2)trasformare il file in un array di byte
3)tramite la classe TCPClient ottenere lo stream della connessione con getStream()
4)Salvare lo stream in una classe NetworkStream
5)Inviare con la write della NetworkStream l'array di byte equivalente al file
|
|
rocruss (Normal User)
Newbie
Messaggi: 6
Iscritto: 26/03/2009
|
Ti ringrazio lunedi provo, ma una curiosità: quello che dici è grossomodo quello che ho fatto, solo che io ho usato il metodo send, cosa cambia rispetto al write?
grazie marco
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
il metodo send di che classe?
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Lorenzo si riferiva al wrapper di livello superiore TcpClient, mentre rocruss alla semplice classe Socket (che espone il metodo Send). Potresti mostrare il codice? Ora come ora non riesco ad immaginarmelo.
|
|
rocruss (Normal User)
Newbie
Messaggi: 6
Iscritto: 26/03/2009
|
Di seguito il codice da cui sono partito, al posto di 'This is a test' ho mandato il file di datidell'eticchetta
grazie marco
/
Dim bytes(1024) As Byte
' Connect to a remote device.
' Establish the remote endpoint for the socket.
' This example uses port 11000 on the local computer.
Dim ipHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)
Dim remoteEP As New IPEndPoint(ipAddress, 11000)
' Create a TCP/IP socket.
Dim sender As New Socket(AddressFamily.InterNetwork, _
SocketType.Stream, ProtocolType.Tcp)
' Connect the socket to the remote endpoint.
sender.Connect(remoteEP)
Console.WriteLine("Socket connected to {0}", _
sender.RemoteEndPoint.ToString())
' Encode the data string into a byte array.
Dim msg As Byte() = _
Encoding.ASCII.GetBytes("This is a test")
' Send the data through the socket.
Dim bytesSent As Integer = sender.Send(msg)
' Receive the response from the remote device.
Dim bytesRec As Integer = sender.Receive(bytes)
Console.WriteLine("Echoed test = {0}", _
Encoding.ASCII.GetString(bytes, 0, bytesRec))
' Release the socket.
sender.Shutdown(SocketShutdown.Both)
sender.Close()
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
L'esempio si connette allo stesso computer sulla porta 1100 (che non è una porta fisica), ma sei sicuro che questo ti permetta di accedere al dispositivo desiderato? Hai fatto dei controlli, e ti sei documentato sulle modalità del protocollo?
Se il lettore è collegato tramite una porta seriale c'è il controllo SerialPort che ti può facilitare il lavoro. Se usa una usb devi utilizzare le librerie fornite dal produttore.
|
|
rocruss (Normal User)
Newbie
Messaggi: 6
Iscritto: 26/03/2009
|
Questo è solo l'esempio da cui sono partito. Il dispositivo col quale mi devo collegare, possiede un indirizzo ip (fisso) e usa il port 8000 è una stampa etichette, di questo sono sicuro perchè con il componente socket di VB6 funziona perfettamente. La tecnica che intendo usare, credo sia corretta solo che non avendo molta esperienza con le socket, temo che sto facendo un errore del quale non mi rendo conto.
grazie marco
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Appurato questo, dovremmo sapere di che errore si tratta. O se non genera errori cosa succede di preciso. Dire che "non funziona" è molto vago...
|
|