亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? justinio.cs

?? 使用pdudecoding,pduencoding 和串口
?? CS
字號:
using System;
using System.Runtime.InteropServices;

namespace JustinIO
{
    class CommPort
    {

        public string PortNum;
        public int BaudRate;
        public byte ByteSize;
        public byte Parity; // 0-4=no,odd,even,mark,space 
        public byte StopBits; // 0,1,2 = 1, 1.5, 2 
        public int ReadTimeout;

        //comm port win32 file handle
        private int hComm = -1;

        public bool Opened = false;

        //win32 api constants
        private const uint GENERIC_READ = 0x80000000;
        private const uint GENERIC_WRITE = 0x40000000;
        private const int OPEN_EXISTING = 3;
        private const int INVALID_HANDLE_VALUE = -1;

        [StructLayout(LayoutKind.Sequential)]
        public struct DCB
        {
            //taken from c struct in platform sdk 
            public int DCBlength;            // sizeof(DCB) 
            public int BaudRate;             // 指定當前波特率 current baud rate
            // these are the c struct bit fields, bit twiddle flag to set
            public int fBinary;           // 指定是否允許二進制模式,在windows95中必須主TRUE binary mode, no EOF check 
            public int fParity;           // 指定是否允許奇偶校驗 enable parity checking 
            public int fOutxCtsFlow;       // 指定CTS是否用于檢測發送控制,當為TRUE是CTS為OFF,發送將被掛起。 CTS output flow control 
            public int fOutxDsrFlow;       // 指定CTS是否用于檢測發送控制 DSR output flow control 
            public int fDtrControl;        // DTR_CONTROL_DISABLE值將DTR置為OFF, DTR_CONTROL_ENABLE值將DTR置為ON, DTR_CONTROL_HANDSHAKE允許DTR"握手" DTR flow control type 
            public int fDsrSensitivity;    // 當該值為TRUE時DSR為OFF時接收的字節被忽略 DSR sensitivity 
            public int fTXContinueOnXoff; // 指定當接收緩沖區已滿,并且驅動程序已經發送出XoffChar字符時發送是否停止。TRUE時,在接收緩沖區接收到緩沖區已滿的字節XoffLim且驅動程序已經發送出XoffChar字符中止接收字節之后,發送繼續進行。 FALSE時,在接收緩沖區接收到代表緩沖區已空的字節XonChar且驅動程序已經發送出恢復發送的XonChar之后,發送繼續進行。XOFF continues Tx 
            public int fOutX;           // TRUE時,接收到XoffChar之后便停止發送接收到XonChar之后將重新開始 XON/XOFF out flow control 
            public int fInX;            // TRUE時,接收緩沖區接收到代表緩沖區滿的XoffLim之后,XoffChar發送出去接收緩沖區接收到代表緩沖區空的XonLim之后,XonChar發送出去 XON/XOFF in flow control 
            public int fErrorChar;      // 該值為TRUE且fParity為TRUE時,用ErrorChar 成員指定的字符代替奇偶校驗錯誤的接收字符 enable error replacement 
            public int fNull;           // eTRUE時,接收時去掉空(0值)字節 enable null stripping 
            public int fRtsControl;      // RTS flow control 
            /*RTS_CONTROL_DISABLE時,RTS置為OFF
            RTS_CONTROL_ENABLE時, RTS置為ON
        RTS_CONTROL_HANDSHAKE時,
        當接收緩沖區小于半滿時RTS為ON
            當接收緩沖區超過四分之三滿時RTS為OFF
        RTS_CONTROL_TOGGLE時,
        當接收緩沖區仍有剩余字節時RTS為ON ,否則缺省為OFF*/

            public int fAbortOnError;    // TRUE時,有錯誤發生時中止讀和寫操作 abort on error 
            public int fDummy2;         // 未使用 reserved 

            public uint flags;
            public ushort wReserved;           // 未使用,必須為0 not currently used 
            public ushort XonLim;              // 指定在XON字符發送這前接收緩沖區中可允許的最小字節數 transmit XON threshold 
            public ushort XoffLim;             // 指定在XOFF字符發送這前接收緩沖區中可允許的最小字節數 transmit XOFF threshold 
            public byte ByteSize;            // 指定端口當前使用的數據位 number of bits/byte, 4-8 
            public byte Parity;              // 指定端口當前使用的奇偶校驗方法,可能為:EVENPARITY,MARKPARITY,NOPARITY,ODDPARITY   0-4=no,odd,even,mark,space 
            public byte StopBits;            // 指定端口當前使用的停止位數,可能為:ONESTOPBIT,ONE5STOPBITS,TWOSTOPBITS   0,1,2 = 1, 1.5, 2 
            public char XonChar;             // 指定用于發送和接收字符XON的值 Tx and Rx XON character 
            public char XoffChar;            // 指定用于發送和接收字符XOFF值 Tx and Rx XOFF character 
            public char ErrorChar;           // 本字符用來代替接收到的奇偶校驗發生錯誤時的值 error replacement character 
            public char EofChar;             // 當沒有使用二進制模式時,本字符可用來指示數據的結束 end of input character 
            public char EvtChar;             // 當接收到此字符時,會產生一個事件 received event character 
            public ushort wReserved1;          // 未使用 reserved; do not use 
        }

        [StructLayout(LayoutKind.Sequential)]
        private struct COMMTIMEOUTS
        {
            public int ReadIntervalTimeout;
            public int ReadTotalTimeoutMultiplier;
            public int ReadTotalTimeoutConstant;
            public int WriteTotalTimeoutMultiplier;
            public int WriteTotalTimeoutConstant;
        }

        [StructLayout(LayoutKind.Sequential)]
        private struct OVERLAPPED
        {
            public int Internal;
            public int InternalHigh;
            public int Offset;
            public int OffsetHigh;
            public int hEvent;
        }

        [DllImport("kernel32.dll")]
        private static extern int CreateFile(
          string lpFileName,                          // 要打開的串口名稱
          uint dwDesiredAccess,                       // 指定串口的訪問方式,一般設置為可讀可寫方式
          int dwShareMode,                           // 指定串口的共享模式,串口不能共享,所以設置為0
          int lpSecurityAttributes, // 設置串口的安全屬性,WIN9X下不支持,應設為NULL
          int dwCreationDisposition,                 // 對于串口通信,創建方式只能為OPEN_EXISTING
          int dwFlagsAndAttributes,                  // 指定串口屬性與標志,設置為FILE_FLAG_OVERLAPPED(重疊I/O操作),指定串口以異步方式通信
          int hTemplateFile                         // 對于串口通信必須設置為NULL
        );
        [DllImport("kernel32.dll")]
        private static extern bool GetCommState(
          int hFile,   //通信設備句柄
          ref DCB lpDCB     // 設備控制塊DCB
        );
        [DllImport("kernel32.dll")]
        private static extern bool BuildCommDCB(
          string lpDef,   // 設備控制字符串
          ref DCB lpDCB      // 設備控制塊
        );
        [DllImport("kernel32.dll")]
        private static extern bool SetCommState(
          int hFile,   // 通信設備句柄
          ref DCB lpDCB     // 設備控制塊
        );
        [DllImport("kernel32.dll")]
        private static extern bool GetCommTimeouts(
          int hFile,                   // 通信設備句柄 handle to comm device
          ref COMMTIMEOUTS lpCommTimeouts   // 超時時間 time-out values
        );
        [DllImport("kernel32.dll")]
        private static extern bool SetCommTimeouts(
          int hFile,                   // 通信設備句柄 handle to comm device
          ref COMMTIMEOUTS lpCommTimeouts   // 超時時間 time-out values
        );
        [DllImport("kernel32.dll")]
        private static extern bool ReadFile(
          int hFile,                 // 通信設備句柄 handle to file
          byte[] lpBuffer,              // 數據緩沖區 data buffer
          int nNumberOfBytesToRead,   // 多少字節等待讀取 number of bytes to read
          ref int lpNumberOfBytesRead, // 讀取多少字節 number of bytes read
          ref OVERLAPPED lpOverlapped     // 溢出緩沖區 overlapped buffer
        );
        [DllImport("kernel32.dll")]
        private static extern bool WriteFile(
          int hFile,                     // 通信設備句柄 handle to file
          byte[] lpBuffer,                 // 數據緩沖區 data buffer
          int nNumberOfBytesToWrite,      // 多少字節等待寫入 number of bytes to write
          ref int lpNumberOfBytesWritten,   // 已經寫入多少字節 number of bytes written
          ref OVERLAPPED lpOverlapped         // 溢出緩沖區 overlapped buffer
        );
        [DllImport("kernel32.dll")]
        private static extern bool CloseHandle(
          int hObject    // handle to object
        );
        [DllImport("kernel32.dll")]
        private static extern uint GetLastError();

        public void Open()
        {

            DCB dcbCommPort = new DCB();
            COMMTIMEOUTS ctoCommPort = new COMMTIMEOUTS();

            // 打開串口 OPEN THE COMM PORT.
            hComm = CreateFile(PortNum, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
            // 如果串口沒有打開,就打開 IF THE PORT CANNOT BE OPENED, BAIL OUT.
            if (hComm == INVALID_HANDLE_VALUE)
            {
                throw (new ApplicationException("非法操作,不能打開串口!"));
            }

            // 設置通信超時時間 SET THE COMM TIMEOUTS.
            GetCommTimeouts(hComm, ref ctoCommPort);
            ctoCommPort.ReadTotalTimeoutConstant = ReadTimeout;
            ctoCommPort.ReadTotalTimeoutMultiplier = 0;
            ctoCommPort.WriteTotalTimeoutMultiplier = 0;
            ctoCommPort.WriteTotalTimeoutConstant = 0;
            SetCommTimeouts(hComm, ref ctoCommPort);

            // 設置串口 SET BAUD RATE, PARITY, WORD SIZE, AND STOP BITS.
            GetCommState(hComm, ref dcbCommPort);
            dcbCommPort.BaudRate = BaudRate;
            dcbCommPort.flags = 0;
            //dcb.fBinary=1;
            dcbCommPort.flags |= 1;
            if (Parity > 0)
            {
                //dcb.fParity=1
                dcbCommPort.flags |= 2;
            }
            dcbCommPort.Parity = Parity;
            dcbCommPort.ByteSize = ByteSize;
            dcbCommPort.StopBits = StopBits;
            if (!SetCommState(hComm, ref dcbCommPort))
            {
                //uint ErrorNum=GetLastError();
                throw (new ApplicationException("非法操作,不能打開串口!"));
            }
            //unremark to see if setting took correctly
            //DCB dcbCommPort2 = new DCB();
            //GetCommState(hComm, ref dcbCommPort2);
            Opened = true;
        }

        public void Close()
        {
            if (hComm != INVALID_HANDLE_VALUE)
            {
                CloseHandle(hComm);
            }
        }

        public byte[] Read(int NumBytes)
        {
            byte[] BufBytes;
            byte[] OutBytes;
            BufBytes = new byte[NumBytes];
            if (hComm != INVALID_HANDLE_VALUE)
            {
                OVERLAPPED ovlCommPort = new OVERLAPPED();
                int BytesRead = 0;
                ReadFile(hComm, BufBytes, NumBytes, ref BytesRead, ref ovlCommPort);
                OutBytes = new byte[BytesRead];
                Array.Copy(BufBytes, OutBytes, BytesRead);
            }
            else
            {
                throw (new ApplicationException("串口未打開!"));
            }
            return OutBytes;
        }

        public void Write(byte[] WriteBytes)
        {
            if (hComm != INVALID_HANDLE_VALUE)
            {
                OVERLAPPED ovlCommPort = new OVERLAPPED();
                int BytesWritten = 0;
                WriteFile(hComm, WriteBytes, WriteBytes.Length, ref BytesWritten, ref ovlCommPort);
            }
            else
            {
                throw (new ApplicationException("串口未打開!"));
            }
        }
    }

    class HexCon
    {
        // 把十六進制字符串轉換成字節型和把字節型轉換成十六進制字符串 converter hex string to byte and byte to hex string
        public static string ByteToString(byte[] InBytes)
        {
            string StringOut = "";
            foreach (byte InByte in InBytes)
            {
                StringOut = StringOut + String.Format("{0:X2} ", InByte);
            }
            return StringOut;
        }
        public static byte[] StringToByte(string InString)
        {
            string[] ByteStrings;
            ByteStrings = InString.Split(" ".ToCharArray());
            byte[] ByteOut;
            ByteOut = new byte[ByteStrings.Length - 1];
            for (int i = 0; i == ByteStrings.Length - 1; i++)
            {
                ByteOut[i] = Convert.ToByte(("0x" + ByteStrings[i]));
            }
            return ByteOut;
        }
    }
}
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜精品一区二区三区| 亚洲国产一区二区三区| 欧美人动与zoxxxx乱| 激情丁香综合五月| 日本怡春院一区二区| 亚洲综合在线观看视频| 5566中文字幕一区二区电影| 暴力调教一区二区三区| 极品美女销魂一区二区三区免费| 一区二区三区精品在线观看| 中文字幕二三区不卡| 日韩精品中文字幕在线一区| youjizz久久| 国产盗摄视频一区二区三区| 精品一区二区免费在线观看| 奇米一区二区三区| 日本成人在线不卡视频| 日韩成人精品视频| 麻豆精品蜜桃视频网站| 日韩高清电影一区| 日本午夜一本久久久综合| 秋霞av亚洲一区二区三| 麻豆国产精品视频| 精品写真视频在线观看| 极品少妇一区二区| 粉嫩一区二区三区性色av| 成人免费看片app下载| 成人在线一区二区三区| 91丨九色丨蝌蚪富婆spa| 91美女在线观看| 欧美主播一区二区三区美女| 欧美日韩高清影院| 精品国产91洋老外米糕| 国产欧美综合在线观看第十页| 国产精品视频你懂的| 中文字幕av一区二区三区免费看 | 国产精品网站在线观看| 国产精品网站在线播放| 一区二区三区在线视频免费观看 | 亚洲国产美国国产综合一区二区| 亚洲欧美经典视频| 亚洲va欧美va国产va天堂影院| 日韩不卡免费视频| 国产成人免费视频网站| 一本大道久久精品懂色aⅴ| 欧美日韩国产a| 国产午夜久久久久| 亚洲一区二区欧美| 国产剧情一区在线| 欧美三级电影在线观看| 久久久午夜精品理论片中文字幕| 亚洲精品乱码久久久久久| 日韩国产精品久久久久久亚洲| 成人国产精品免费网站| 欧美精品乱码久久久久久按摩 | 亚洲永久免费av| 亚洲成年人网站在线观看| 国产乱码字幕精品高清av| 一本一道综合狠狠老| 精品成人a区在线观看| 亚洲精品成人悠悠色影视| 国产伦精一区二区三区| 欧美精品久久久久久久多人混战| 日韩三级电影网址| 最新热久久免费视频| 免费的成人av| 欧美日韩国产系列| 成人免费一区二区三区在线观看| 美腿丝袜亚洲色图| 日本高清成人免费播放| 国产精品五月天| 国产精品影视网| 欧美一区二区三区在线观看视频| 伊人性伊人情综合网| 成人一二三区视频| 欧美tk丨vk视频| 午夜亚洲国产au精品一区二区| a4yy欧美一区二区三区| 国产亚洲一区二区在线观看| 蜜臀av一区二区在线免费观看| 欧美日韩一区 二区 三区 久久精品| 精品乱人伦小说| 蜜桃av一区二区在线观看| 欧美日韩一区二区三区四区| 亚洲精品视频在线观看免费 | 国产一区在线精品| 精品国产一二三区| 欧美aaaaa成人免费观看视频| 欧美吻胸吃奶大尺度电影| 亚洲欧美日韩中文播放 | 久久久高清一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 欧美视频自拍偷拍| 亚洲一区二区av在线| 一本大道久久a久久综合婷婷| 亚洲三级理论片| 一本久久精品一区二区| 亚洲精品高清在线| 欧美亚洲高清一区| 依依成人精品视频| 91麻豆自制传媒国产之光| 国产精品另类一区| 成人美女视频在线看| 国产精品久久久久久福利一牛影视 | eeuss鲁一区二区三区| 中日韩av电影| 在线观看一区不卡| 亚洲高清免费视频| 制服丝袜中文字幕亚洲| 另类欧美日韩国产在线| 国产亚洲制服色| 色综合久久88色综合天天免费| 亚洲高清中文字幕| 欧美精品一区二区蜜臀亚洲| 国产成人小视频| 亚洲精品日韩一| 欧美喷水一区二区| 国产精一区二区三区| 亚洲成av人综合在线观看| 91麻豆精品国产91久久久久久| 精品一区二区三区在线视频| 国产精品卡一卡二卡三| 欧美日韩亚洲综合在线| 精品在线你懂的| 亚洲欧洲av另类| 91精品国产综合久久国产大片| 亚洲成人自拍一区| 欧美巨大另类极品videosbest | 99精品视频免费在线观看| 成人欧美一区二区三区1314| 91麻豆精品91久久久久同性| 国产一区二区三区在线观看精品| 亚洲欧洲中文日韩久久av乱码| 日韩一级免费一区| 99国内精品久久| 久久机这里只有精品| 亚洲乱码中文字幕综合| 亚洲精品一区二区在线观看| 日本精品一区二区三区高清 | 国产精品久久久久久久久晋中| 欧美亚洲一区二区三区四区| 国产精品99久久久久久似苏梦涵 | 国产91色综合久久免费分享| 亚洲资源在线观看| 国产三级久久久| 3d动漫精品啪啪| 一本大道久久精品懂色aⅴ| 国内国产精品久久| 日韩不卡在线观看日韩不卡视频| 首页国产丝袜综合| 久久无码av三级| 欧美午夜一区二区三区| 国产不卡高清在线观看视频| 热久久一区二区| 日日噜噜夜夜狠狠视频欧美人| √…a在线天堂一区| 国产欧美一区二区精品婷婷| 欧美一区二区性放荡片| 欧美日韩一区二区三区四区 | 中文字幕免费在线观看视频一区| 91精品久久久久久久99蜜桃| 91久久精品日日躁夜夜躁欧美| 成av人片一区二区| 国产精品中文有码| 国产成人亚洲综合a∨婷婷| 激情偷乱视频一区二区三区| 国产美女久久久久| 黄色成人免费在线| 成人三级伦理片| 91在线码无精品| 欧美揉bbbbb揉bbbbb| 欧美一区二区在线观看| 欧美成人性福生活免费看| 国产欧美精品一区二区三区四区| 国产精品久久夜| 亚洲成人在线观看视频| 免费在线一区观看| 风间由美一区二区av101| 97精品国产97久久久久久久久久久久| 91成人看片片| 欧美一级片在线观看| 国产女同互慰高潮91漫画| 亚洲欧美aⅴ...| 日韩一区精品字幕| 国产91精品久久久久久久网曝门| 日本伦理一区二区| 精品国产亚洲一区二区三区在线观看| 国产精品无码永久免费888| 亚洲一区二区三区四区中文字幕| 天堂一区二区在线| 成人app下载| 日韩视频在线一区二区| 欧美国产精品一区| 日本视频在线一区| 波多野结衣精品在线| 欧美一级片免费看| 专区另类欧美日韩| 国产一区二区不卡| 欧美精品一级二级| 亚洲欧美一区二区久久|