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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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;             // 指定當(dāng)前波特率 current baud rate
            // these are the c struct bit fields, bit twiddle flag to set
            public int fBinary;           // 指定是否允許二進(jìn)制模式,在windows95中必須主TRUE binary mode, no EOF check 
            public int fParity;           // 指定是否允許奇偶校驗 enable parity checking 
            public int fOutxCtsFlow;       // 指定CTS是否用于檢測發(fā)送控制,當(dāng)為TRUE是CTS為OFF,發(fā)送將被掛起。 CTS output flow control 
            public int fOutxDsrFlow;       // 指定CTS是否用于檢測發(fā)送控制 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;    // 當(dāng)該值為TRUE時DSR為OFF時接收的字節(jié)被忽略 DSR sensitivity 
            public int fTXContinueOnXoff; // 指定當(dāng)接收緩沖區(qū)已滿,并且驅(qū)動程序已經(jīng)發(fā)送出XoffChar字符時發(fā)送是否停止。TRUE時,在接收緩沖區(qū)接收到緩沖區(qū)已滿的字節(jié)XoffLim且驅(qū)動程序已經(jīng)發(fā)送出XoffChar字符中止接收字節(jié)之后,發(fā)送繼續(xù)進(jìn)行。 FALSE時,在接收緩沖區(qū)接收到代表緩沖區(qū)已空的字節(jié)XonChar且驅(qū)動程序已經(jīng)發(fā)送出恢復(fù)發(fā)送的XonChar之后,發(fā)送繼續(xù)進(jìn)行。XOFF continues Tx 
            public int fOutX;           // TRUE時,接收到XoffChar之后便停止發(fā)送接收到XonChar之后將重新開始 XON/XOFF out flow control 
            public int fInX;            // TRUE時,接收緩沖區(qū)接收到代表緩沖區(qū)滿的XoffLim之后,XoffChar發(fā)送出去接收緩沖區(qū)接收到代表緩沖區(qū)空的XonLim之后,XonChar發(fā)送出去 XON/XOFF in flow control 
            public int fErrorChar;      // 該值為TRUE且fParity為TRUE時,用ErrorChar 成員指定的字符代替奇偶校驗錯誤的接收字符 enable error replacement 
            public int fNull;           // eTRUE時,接收時去掉空(0值)字節(jié) enable null stripping 
            public int fRtsControl;      // RTS flow control 
            /*RTS_CONTROL_DISABLE時,RTS置為OFF
            RTS_CONTROL_ENABLE時, RTS置為ON
        RTS_CONTROL_HANDSHAKE時,
        當(dāng)接收緩沖區(qū)小于半滿時RTS為ON
            當(dāng)接收緩沖區(qū)超過四分之三滿時RTS為OFF
        RTS_CONTROL_TOGGLE時,
        當(dāng)接收緩沖區(qū)仍有剩余字節(jié)時RTS為ON ,否則缺省為OFF*/

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

            public uint flags;
            public ushort wReserved;           // 未使用,必須為0 not currently used 
            public ushort XonLim;              // 指定在XON字符發(fā)送這前接收緩沖區(qū)中可允許的最小字節(jié)數(shù) transmit XON threshold 
            public ushort XoffLim;             // 指定在XOFF字符發(fā)送這前接收緩沖區(qū)中可允許的最小字節(jié)數(shù) transmit XOFF threshold 
            public byte ByteSize;            // 指定端口當(dāng)前使用的數(shù)據(jù)位 number of bits/byte, 4-8 
            public byte Parity;              // 指定端口當(dāng)前使用的奇偶校驗方法,可能為:EVENPARITY,MARKPARITY,NOPARITY,ODDPARITY   0-4=no,odd,even,mark,space 
            public byte StopBits;            // 指定端口當(dāng)前使用的停止位數(shù),可能為:ONESTOPBIT,ONE5STOPBITS,TWOSTOPBITS   0,1,2 = 1, 1.5, 2 
            public char XonChar;             // 指定用于發(fā)送和接收字符XON的值 Tx and Rx XON character 
            public char XoffChar;            // 指定用于發(fā)送和接收字符XOFF值 Tx and Rx XOFF character 
            public char ErrorChar;           // 本字符用來代替接收到的奇偶校驗發(fā)生錯誤時的值 error replacement character 
            public char EofChar;             // 當(dāng)沒有使用二進(jìn)制模式時,本字符可用來指示數(shù)據(jù)的結(jié)束 end of input character 
            public char EvtChar;             // 當(dāng)接收到此字符時,會產(chǎn)生一個事件 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,                       // 指定串口的訪問方式,一般設(shè)置為可讀可寫方式
          int dwShareMode,                           // 指定串口的共享模式,串口不能共享,所以設(shè)置為0
          int lpSecurityAttributes, // 設(shè)置串口的安全屬性,WIN9X下不支持,應(yīng)設(shè)為NULL
          int dwCreationDisposition,                 // 對于串口通信,創(chuàng)建方式只能為OPEN_EXISTING
          int dwFlagsAndAttributes,                  // 指定串口屬性與標(biāo)志,設(shè)置為FILE_FLAG_OVERLAPPED(重疊I/O操作),指定串口以異步方式通信
          int hTemplateFile                         // 對于串口通信必須設(shè)置為NULL
        );
        [DllImport("kernel32.dll")]
        private static extern bool GetCommState(
          int hFile,   //通信設(shè)備句柄
          ref DCB lpDCB     // 設(shè)備控制塊DCB
        );
        [DllImport("kernel32.dll")]
        private static extern bool BuildCommDCB(
          string lpDef,   // 設(shè)備控制字符串
          ref DCB lpDCB      // 設(shè)備控制塊
        );
        [DllImport("kernel32.dll")]
        private static extern bool SetCommState(
          int hFile,   // 通信設(shè)備句柄
          ref DCB lpDCB     // 設(shè)備控制塊
        );
        [DllImport("kernel32.dll")]
        private static extern bool GetCommTimeouts(
          int hFile,                   // 通信設(shè)備句柄 handle to comm device
          ref COMMTIMEOUTS lpCommTimeouts   // 超時時間 time-out values
        );
        [DllImport("kernel32.dll")]
        private static extern bool SetCommTimeouts(
          int hFile,                   // 通信設(shè)備句柄 handle to comm device
          ref COMMTIMEOUTS lpCommTimeouts   // 超時時間 time-out values
        );
        [DllImport("kernel32.dll")]
        private static extern bool ReadFile(
          int hFile,                 // 通信設(shè)備句柄 handle to file
          byte[] lpBuffer,              // 數(shù)據(jù)緩沖區(qū) data buffer
          int nNumberOfBytesToRead,   // 多少字節(jié)等待讀取 number of bytes to read
          ref int lpNumberOfBytesRead, // 讀取多少字節(jié) number of bytes read
          ref OVERLAPPED lpOverlapped     // 溢出緩沖區(qū) overlapped buffer
        );
        [DllImport("kernel32.dll")]
        private static extern bool WriteFile(
          int hFile,                     // 通信設(shè)備句柄 handle to file
          byte[] lpBuffer,                 // 數(shù)據(jù)緩沖區(qū) data buffer
          int nNumberOfBytesToWrite,      // 多少字節(jié)等待寫入 number of bytes to write
          ref int lpNumberOfBytesWritten,   // 已經(jīng)寫入多少字節(jié) number of bytes written
          ref OVERLAPPED lpOverlapped         // 溢出緩沖區(qū) 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("非法操作,不能打開串口!"));
            }

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

            // 設(shè)置串口 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
    {
        // 把十六進(jìn)制字符串轉(zhuǎn)換成字節(jié)型和把字節(jié)型轉(zhuǎn)換成十六進(jìn)制字符串 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;
        }
    }
}
 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一二三| 激情综合色播五月| 色欧美乱欧美15图片| 成人免费一区二区三区视频| 成人av在线资源| 中文字幕在线不卡一区二区三区 | 精品国产免费视频| 国产一区福利在线| 亚洲国产精品成人综合色在线婷婷 | 久久欧美一区二区| 国产不卡高清在线观看视频| 中文字幕日本不卡| 在线看国产一区二区| 亚洲国产另类av| 精品国产一二三区| 丁香啪啪综合成人亚洲小说 | 欧美理论片在线| 韩国女主播一区| 国产精品激情偷乱一区二区∴| 制服丝袜av成人在线看| 精品夜夜嗨av一区二区三区| 久久九九久久九九| 91丨九色丨黑人外教| 偷拍日韩校园综合在线| 久久精品一区八戒影视| 色嗨嗨av一区二区三区| 美国毛片一区二区| 18涩涩午夜精品.www| 欧美色电影在线| 成人美女视频在线看| 亚洲va欧美va人人爽午夜| 久久久.com| 欧美精品99久久久**| 粉嫩一区二区三区性色av| 亚洲成人免费看| 国产精品污www在线观看| 欧美吞精做爰啪啪高潮| 高清在线不卡av| 午夜视频一区在线观看| 亚洲国产成人在线| 欧美一区二区三区啪啪| 色琪琪一区二区三区亚洲区| 国产剧情一区在线| 日韩av在线免费观看不卡| 日韩理论电影院| 精品国产乱码久久久久久1区2区| 在线观看视频欧美| 成人h动漫精品一区二区| 精品一区二区三区久久| 亚洲aⅴ怡春院| 亚洲美女一区二区三区| 精品99久久久久久| 91精品福利在线一区二区三区| 色综合久久久网| 成人深夜福利app| 国产呦精品一区二区三区网站| 丝袜脚交一区二区| 亚洲女人的天堂| 欧美激情综合五月色丁香小说| 欧美理论在线播放| 欧美性猛交xxxxxxxx| 成人夜色视频网站在线观看| 青青草视频一区| 亚洲一区中文日韩| 亚洲免费av网站| 久久日韩精品一区二区五区| 色美美综合视频| 不卡一区在线观看| 国产一区二区不卡| 丝袜亚洲另类丝袜在线| 亚洲欧美怡红院| 国产拍揄自揄精品视频麻豆| 日韩免费视频一区| 欧美日韩一区二区在线观看| 日韩在线卡一卡二| 亚洲国产另类精品专区| 亚洲精品乱码久久久久| 国产精品素人视频| 欧美精品一区二区三| 欧美一级欧美三级在线观看| 欧美系列一区二区| 在线看一区二区| 91精彩视频在线| 麻豆精品一区二区av白丝在线| 蜜臀av国产精品久久久久| 亚洲一区二区综合| 国产精品免费看片| 欧美国产日韩a欧美在线观看| 欧美www视频| 日韩欧美激情一区| 欧美精品v国产精品v日韩精品| 欧美视频日韩视频| 欧美日韩一区二区三区视频| 在线看日本不卡| 色综合天天做天天爱| 欧美在线观看禁18| 精品视频免费看| 欧美日韩黄视频| 欧美日韩免费电影| 7777精品伊人久久久大香线蕉完整版 | 欧美视频一区二区在线观看| 色综合一个色综合亚洲| 99久久婷婷国产综合精品| 丁香激情综合国产| 国产v综合v亚洲欧| 色综合久久综合中文综合网| 日本久久电影网| 在线观看一区日韩| 欧美精品亚洲一区二区在线播放| 欧美日韩视频在线第一区| 56国语精品自产拍在线观看| 91久久香蕉国产日韩欧美9色| 色天天综合久久久久综合片| 欧美精品一卡两卡| 久久综合久久综合九色| 国产欧美精品一区| 亚洲欧美偷拍卡通变态| 亚洲国产裸拍裸体视频在线观看乱了 | 国内精品久久久久影院一蜜桃| 国内欧美视频一区二区| 国产精品99久久久久久久女警| 波多野结衣的一区二区三区| 在线观看日产精品| 日韩欧美国产三级| 中文字幕一区二区三中文字幕| 最新国产成人在线观看| 久久精品国产网站| 国产精品中文有码| 在线中文字幕一区| 欧美电视剧在线观看完整版| 中文字幕精品一区二区三区精品| 亚洲国产乱码最新视频 | 中文字幕乱码日本亚洲一区二区 | 欧美一区二区久久| 国产无一区二区| 亚洲国产中文字幕在线视频综合| 激情综合五月婷婷| 91影院在线免费观看| 9191成人精品久久| 国产精品五月天| 视频一区二区不卡| eeuss鲁片一区二区三区在线观看| 欧美亚州韩日在线看免费版国语版| 欧美精品一区二区精品网| 久久久久久电影| 午夜伊人狠狠久久| 成人精品视频一区二区三区尤物| 欧美日韩亚洲国产综合| 久久久美女毛片| 日韩精品1区2区3区| 91香蕉视频mp4| 精品福利在线导航| 亚洲韩国一区二区三区| 国产精品一区二区三区99| 欧美一卡在线观看| 亚洲一区二区在线免费看| 国产成人一区在线| 精品久久久久香蕉网| 亚洲成a人v欧美综合天堂| av在线这里只有精品| 精品国产一区二区精华| 日韩影院精彩在线| 色婷婷综合五月| 久久色.com| 国产不卡视频一区| www欧美成人18+| 久久99精品久久久| 日韩三区在线观看| 亚洲成av人片www| eeuss国产一区二区三区| 亚洲天堂久久久久久久| 成人免费视频app| 久久久久久久久久久电影| 免费久久精品视频| 欧美乱妇15p| 婷婷综合五月天| 欧美午夜宅男影院| 亚洲欧美日韩精品久久久久| 成人av电影免费观看| 国产精品久久久久久久久久免费看| 国产一区二区视频在线播放| 日韩视频免费观看高清完整版在线观看 | 97久久超碰国产精品电影| 久久久久久久精| 国产一区二区三区在线观看免费| 欧美一区二区三区白人| 蜜臀久久99精品久久久画质超高清 | 日日欢夜夜爽一区| 欧美在线一二三| 狂野欧美性猛交blacked| 日韩一二三区视频| 免费观看日韩av| 欧美mv和日韩mv国产网站| 韩国一区二区视频| 国产日韩av一区| 成人一道本在线| 久久久国产午夜精品| 色婷婷综合激情| 丝袜美腿亚洲一区二区图片| 91麻豆精品国产|