C # send commands to the parallel device to obtain the status of the parallel Device
Using System; using System. diagnostics; using System. runtime. interopServices; using System. text; using System. windows. forms; namespace ParallelPort {public partial class Form1: Form {const uint GENERIC_READ = 0x80000000; const uint GENERIC_WRITE = 0x40000000; const uint FILE_ATTRIBUTE_NORMAL = 0x80; # region win32 API [DllImport ("kernel32.dll")] private static extern int CreateFile (string lpFileName, Uint dwDesiredAccess, int dwationmode, int lpSecurityAttributes, int dwCreationDisposition, uint cancel, int hTemplateFile); [DllImport ("kernel32.dll")] private static extern bool WriteFile (int hFile, byte [] lpBuffer, int nNumberOfBytesToWrite, ref int lpNumberOfBytesWritten, int lpOverlapped); [DllImport ("kernel32.dll")] private static extern bool DefineDosDevice (int dwFlags, String lpDeviceName, string lpTargetPath); [DllImport ("kernel32.dll")] private static extern bool CloseHandle (int hObject); [DllImport ("kernel32.dll")] private static extern bool ReadFile (int hFile, byte [] lpBuffer, int nNumberOfBytesToRead, ref int lpNumberOfBytesRead, int lpOverlapped); # endregion public Form1 () {InitializeComponent ();} private void button#click (object sender, EventAr Gs e) {int iHandle =-1; try {int I = 0; // create an instance DefineDosDevice (0x00000001, "LptPortName", @ "\ Device \ Parallel0 "); iHandle = CreateFile (@"\\. \ LptPortName ", GENERIC_READ | GENERIC_WRITE, 0, 0, 3, FILE_ATTRIBUTE_NORMAL, 0); if (iHandle! =-1) {byte [] mybyte = new byte [3] {0x12, 0x14, 0x14}; // command to be sent (hexadecimal) writeFile (iHandle, mybyte, mybyte. length, ref I, 0); byte [] mybyte1 = new byte [3]; string content = String. empty; int j = 0; ReadFile (iHandle, mybyte1, 3, ref j, 0); if (mybyte1! = Null) {foreach (var tempByte in mybyte1) {content + = tempByte. toString () ;}} MessageBox. show (content); // The obtained status value} else {MessageBox. show ("file creation failed! ") ;}} Catch (Exception ex) {MessageBox. Show (ex. Message) ;}finally {if (iHandle> 0) {CloseHandle (iHandle );}}}}}