Ce code demande en ligne de commande une adresse IP ou un nom d'hôte, ouvre une connexion TCP sur la machine correspondant à la valeur saisie, et y envoie un texte de test. Le texte imprimé est mis en forme (alignement, gras) via des commandes Epson® ESC/POS.
Pour tester ce code, créez un projet d'application en ligne de commande C# depuis Microsoft Visual Studio, et replacez le contenu du fichier principal par celui-ci.
using System; using System.Text; using System.Net.Sockets; namespace EthPosTcpSample { class Program { const char ESC = '\x1b'; const char FS = '\x1c'; const char GS = '\x1d'; static void TcpPrint(string host, byte[] data) { Socket s = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.Connect(host, 9100); s.Send(data); s.Disconnect(false); } static byte[] GetPrintData(string host) { StringBuilder sb = new StringBuilder(); // Initialize printer sb.Append(ESC + "@"); // Align center sb.Append(ESC + "a" + (char)1); // Use bold sb.Append(ESC + "E" + (char)1); // Add header text sb.Append("Active+ Software\n"); sb.Append("https://www.activeplus.com\n\n"); // Revert to align left and normal weight sb.Append(ESC + "a" + (char)0); sb.Append(ESC + "E" + (char)0); // Format some text sb.Append("This sample text is sent from a C# program\n"); sb.AppendFormat("to Ethernet POS machine '{0}'.\n\n", host); sb.Append("Regards,\nThe Active+ Software team\n"); // Feed and cut paper sb.Append(GS + "V\x41\0"); return Encoding.Default.GetBytes(sb.ToString()); } static void Main(string[] args) { Console.Write("Please enter a hostname or IP: "); string host = Console.ReadLine(); Console.WriteLine(); try { byte[] data = GetPrintData(host); TcpPrint(host, data); Console.WriteLine( "{0} bytes successfully sent to Ethernet POS machine '{1}'", data.Length, host); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); } } } }
Télécharger tcpip.cs