要循环读取16站,如果我有些时候有几站没用,怎么判断呢?非常感谢!
E_maiL:[email protected]
E_maiL:[email protected]
解决方案 »
- 这段代码得到的是物理序列号还是逻辑序列号?
- 泪汪汪的求解= =!
- 什么是HTTP协议,什么是TCP协议,什么是套接字?
- 用selset查询数据问题
- 高手救命!!!成功加分
- 小弟新学.net不久 看到个代码段有点不明白请高手们帮忙指点下好不
- datawindow.net 怎么实现按shift、ctrl键实现多选功能!!!在线等急啊!谢谢!
- 一个很弱的问题,如何在VS.NET2003调试单个.CS文档?
- FolderBrowserDialog控件,如何设置初始目录
- ADO.NET和SYBASE 11.5
- 急求FFT(频谱)算法,c#版
- 一个在ado.net中如何使用事物(transaction)的问题
我的邮箱
[email protected]
[email protected]
[email protected]
Thank you!
我也想要一份,谢谢
[email protected]
谢谢楼上呀
[email protected],谢谢pc_csharp(帮助别人,帮助自己)!
谢谢
谢谢了!
[email protected]
[email protected]
[email protected]
谢谢!~~~~
谢谢!不胜感激!大家一起顶啊!!
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/code4fun12102003.mspx
[email protected]
you can translate it into english
[email protected]
我正为这个发愁呢
using System.Runtime.InteropServices;
using System.Windows.Forms;namespace printuseapi
{
public class writeLpt1
{
#region 申明要引用的和並口要調用的API
//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;
private const uint FILE_FLAG_OVERLAPPED = 0x40000000; //異步通訊
private const int MAXBLOCK = 4096; private const uint PURGE_TXABORT = 0x0001; // Kill the pending/current writes to the comm port.
private const uint PURGE_RXABORT = 0x0002; // Kill the pending/current reads to the comm port.
private const uint PURGE_TXCLEAR = 0x0004; // Kill the transmit queue if there.
private const uint PURGE_RXCLEAR = 0x0008; // Kill the typeahead buffer if there.
private const int EV_RXCHAR = 0x0001; //private const uint EV_RXCHAR =
[StructLayout(LayoutKind.Sequential)]
private struct DCB
{
//taken from c struct in platform sdk
public int DCBlength;
public int BaudRate;
public int fBinary;
public int fParity;
public int fOutxCtsFlow;
public int fOutxDsrFlow;
public int fDtrControl;
public int fDsrSensitivity;
public int fTXContinueOnXoff;
public int fOutX;
public int fInX;
public int fErrorChar;
public int fNull;
public int fRtsControl;
public int fAbortOnError;
public int fDummy2;
public ushort wReserved; public ushort XonLim;
public ushort XoffLim;
public byte ByteSize;
public byte Parity;
public byte StopBits;
public char XonChar;
public char XoffChar;
public char ErrorChar;
public char EofChar;
public char EvtChar;
public ushort wReserved1;
} [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;
}
private struct COMSTAT
{
/*public int fCtsHold;
public int fDsrHold;
public int fRlsdHold;
public int fXoffHold;
public int fXoffSent;
public int fEof;
public int fTxim;
public int fReserved;
public int cbInQue;
public int cbOutQue;*/
// Should have a reverse, i don't know why!!!!!
public int cbOutQue;
public int cbInQue;
public int fReserved;
public int fTxim;
public int fEof;
public int fXoffSent;
public int fXoffHold;
public int fRlsdHold;
public int fDsrHold;
public int fCtsHold;
}
#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern int CreateFile(
string lpFileName, // file name
uint dwDesiredAccess, // access mode
int dwShareMode, // share mode
int lpSecurityAttributes, // SD
int dwCreationDisposition, // how to create
int dwFlagsAndAttributes, // file attributes
int hTemplateFile // handle to template file
);
#else
[DllImport("kernel32")]
private static extern int CreateFile(
string lpFileName, // file name
uint dwDesiredAccess, // access mode
int dwShareMode, // share mode
int lpSecurityAttributes, // SD
int dwCreationDisposition, // how to create
uint dwFlagsAndAttributes, // file attributes
int hTemplateFile // handle to template file
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool GetCommState(
int hFile, // handle to communications device
ref DCB lpDCB // device-control block
);
#else
//取得並口狀態
[DllImport("kernel32")]
private static extern bool GetCommState(
int hFile, // handle to communications device
ref DCB lpDCB // device-control block
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool BuildCommDCB(
string lpDef, // device-control string
ref DCB lpDCB // device-control block
);
#else
[DllImport("kernel32")]
private static extern bool BuildCommDCB(
string lpDef, // device-control string
ref DCB lpDCB // device-control block
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool SetCommState(
int hFile, // handle to communications device
ref DCB lpDCB // device-control block
);
#else
[DllImport("kernel32")]
private static extern bool SetCommState(
int hFile, // handle to communications device
ref DCB lpDCB // device-control block
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool GetCommTimeouts(
int hFile, // handle to comm device
ref COMMTIMEOUTS lpCommTimeouts // time-out values
);
#else
[DllImport("kernel32")]
private static extern bool GetCommTimeouts(
int hFile, // handle to comm device
ref COMMTIMEOUTS lpCommTimeouts // time-out values
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool SetCommTimeouts(
int hFile, // handle to comm device
ref COMMTIMEOUTS lpCommTimeouts // time-out values
);
#else
[DllImport("kernel32")]
private static extern bool SetCommTimeouts(
int hFile, // handle to comm device
ref COMMTIMEOUTS lpCommTimeouts // time-out values
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
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
);
#else
[DllImport("kernel32")]
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
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
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
);
#else
[DllImport("kernel32")]
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
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool CloseHandle(
int hObject // handle to object
);
#else
[DllImport("kernel32")]
private static extern bool CloseHandle(
int hObject // handle to object
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool ClearCommError(
int hFile, // handle to file
ref int lpErrors,
ref COMSTAT lpStat
);
#else
[DllImport("kernel32")]
private static extern bool ClearCommError(
int hFile, // handle to file
ref int lpErrors,
ref COMSTAT lpStat
);
#endif
[DllImport("kernel32")]
private static extern bool PurgeComm(
int hFile, // handle to file
uint dwFlags
);
#else
[DllImport("kernel32")]
private static extern bool PurgeComm(
int hFile, // handle to file
uint dwFlags
);
#endif
#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool SetupComm(
int hFile,
int dwInQueue,
int dwOutQueue
);
#else
[DllImport("kernel32")]
private static extern bool SetupComm(
int hFile,
int dwInQueue,
int dwOutQueue
);
#endif#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool SetCommMask(
int hFile,
int dwEvtMask //梓隴岈璃腔栚鎢
);
#else
[DllImport("kernel32")]
private static extern bool SetCommMask(
int hFile,
int dwEvtMask //表明事件的掩碼
);
#endif#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern bool WaitCommEvent(
int hFile,
ref int lpEvtMask,
ref OVERLAPPED lpOverlapped
);
#else
[DllImport("kernel32")]
private static extern bool WaitCommEvent(
int hFile,
int dwEvtMask,
ref OVERLAPPED lpOverlapped
);
#endif#if FULLFRAMEWORK
[DllImport("kernel32")]
private static extern int CreateEvent(
int lpSecurityAttributes,
bool bManualReset,
bool bInitialState,
string lpName
);
#else
[DllImport("kernel32")]
private static extern int CreateEvent(
int lpSecurityAttributes,
bool bManualReset,
bool bInitialState,
string lpName
);
#endif
//private static extern int
#endregion // SerialPort成員
private int hComm = INVALID_HANDLE_VALUE;
private bool bOpened = false; //標志並口初始化成功與否的標志 public bool Opened //用屬性返回標志變量
{
get
{
return bOpened;
}
}