Necessità di sviluppare una applicazione per comunicare con un lettore di codici a barre Datalogic tramite il protocollo Ethernet/IP? Programmazione Applicata ha la soluzione.
Ammetto che la cosa possa interessare pochi dei frequentatori di questo blog, ma dato che sul sito ufficiale della Datalogicnon sono presenti esempiSSCCE (esempi semplici e direttamente compilabili) ho voluto condividere un piccolo frammento usa e getta.
Configurazione Scanner
Per fare un test veloce di questo codice è necessario aggiustare velocemente la configurazione dello Scanner Datalogic, attraverso il software di configurazione GENIUS fornito:
SCANNER
DATA COMMUNICATION SETTINGS
LINE PARAMETERS
IP ADDRESSING = STATIC
IP ADDRESS = 192.168.1.1
IP NETMASK = 255.255.255.0
IP GATEWAY = 192.168.1.0
TCP/IP SERVICES
USER SOCKET #1
STATUS = ON
DATA TX = ON
HEARTBEAT = DISABLED
TYPE = SERVER
PROTOCOL = TCP
PORT = 9999
Codice Sorgente
Procediamo con il codice:
Imports System.Net.Sockets
Public Function ListenDataLogicScanner(ByVal ipAddress As String, ByVal port As Integer) As String
Dim buffer As New List(Of Byte)
Dim byteArray As Byte()
Dim socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)
Dim barcode As String
socket.Connect(ipAddress, port)
While socket.Available <= 0
System.Threading.Thread.Sleep(10)
End While
While socket.Available > 0
ReDim byteArray(socket.Available)
socket.Receive(byteArray)
buffer.AddRange(byteArray)
End While
barcode = System.Text.Encoding.Default.GetString(buffer.ToArray())
Return barcode
End Sub
using System.Net.Sockets;
public String ListenDataLogicScanner(String ipAddress, int port)
{
List buffer = new List();
Byte[] byteArray;
Socket socket = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.IP);
String barcode;
socket.Connect(ipAddress, port);
while (socket.Available <= 0)
{
System.Threading.Thread.Sleep(10);
}
while (socket.Available > 0)
{
byteArray = new Byte[socket.Available];
socket.Receive(byteArray);
buffer.AddRange(byteArray);
}
barcode = System.Text.Encoding.Default.GetString(buffer.ToArray());
return barcode;
}
Conclusione
Spero di aver contribuito ad aiutare chi, come me, vuole trovare su internet soluzioni semplici e funzionanti da utilizzare a scatola chiusa nei piccoli progetti. Ancora mi sorprendo che nel sito del fornitore non ci sia materiale decente.
Nessun commento:
Posta un commento