C#向並口裝置發送指令以擷取並口裝置的狀態

來源:互聯網
上載者:User

標籤:c#操作並口   檢測並口裝置狀態   

using System;using System.Diagnostics;using System.Runtime.InteropServices;using System.Text;using System.Windows.Forms; namespace PrinterMonitor{    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,            intd wShareMode,            int lpSecurityAttributes,            int dwCreationDisposition,            uint dwFlagsAndAttributes,            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 button1_Click(object sender, EventArgse)        {            intiHandle = -1;            try            {               int i = 0;               //建立執行個體               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 };//要發送的命令(16進位)                   WriteFile(iHandle, mybyte, mybyte.Length, refi, 0);                   byte[] mybyte1 = new byte[3];                   string content="";                   int j = 0;                   ReadFile(iHandle, mybyte1, 3, ref j,  0);                   if (mybyte1 != null)                   {                        foreach(var Tempbyte in mybyte1)                        {                            content += Tempbyte.ToString();                        }                   }                                                  MessageBox.Show(content);//擷取的狀態值               }               else               {                   MessageBox.Show("建立檔案失敗!");               }            }            catch(Exception ex)            {               MessageBox.Show(ex.Message);            }            finally            {               if (iHandle > 0)               {                   CloseHandle(iHandle);               }            }        }    }} 


 

C#向並口裝置發送指令以擷取並口裝置的狀態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.