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
PublicFunctionListenDataLogicScanner(ByVal ipAddress As String, ByVal port As Integer)AsStringDimbufferAsNewList(Of Byte)DimbyteArrayAsByte()DimsocketAsNewSocket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)DimbarcodeAsStringsocket.Connect(ipAddress, port)Whilesocket.Available <= 0
System.Threading.Thread.Sleep(10)EndWhileWhilesocket.Available > 0
ReDimbyteArray(socket.Available)socket.Receive(byteArray)buffer.AddRange(byteArray)EndWhilebarcode = System.Text.Encoding.Default.GetString(buffer.ToArray())ReturnbarcodeEndSub
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