如何使用C#编写向串口收发信息的程序,有专门的类和方法吗??? http://msdn.microsoft.com/msdnmag/issues/02/10/netserialcomm/default.aspx下载这个组件,这是一个用来和串口设备通讯的.NET组件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很好的组件:http://msdn.microsoft.com/msdnmag/issues/02/10/netserialcomm/default.aspx 写法如下:public static bool InitComm(string com) { Win32Com.DCB PortDCB = new Win32Com.DCB(); Win32Com.COMMTIMEOUTS CommTimeouts = new Win32Com.COMMTIMEOUTS(); Win32Com.OVERLAPPED wo = new Win32Com.OVERLAPPED(); IntPtr hPort; hPort = Win32Com.CreateFile(com, Win32Com.GENERIC_READ | Win32Com.GENERIC_WRITE, 0, IntPtr.Zero, Win32Com.OPEN_EXISTING, Win32Com.FILE_FLAG_OVERLAPPED, IntPtr.Zero); if (hPort == (IntPtr)Win32Com.INVALID_HANDLE_VALUE) { return false; } //JH1.1: Changed from 0 to "magic number" to give instant return on ReadFile: CommTimeouts.ReadIntervalTimeout = Win32Com.MAXDWORD; CommTimeouts.ReadTotalTimeoutConstant = 0; CommTimeouts.ReadTotalTimeoutMultiplier = 0; CommTimeouts.WriteTotalTimeoutMultiplier=1000; CommTimeouts.WriteTotalTimeoutConstant = 0; Win32Com.GetCommState (hPort,ref PortDCB); PortDCB.BaudRate = 9600; PortDCB.ByteSize = 8; PortDCB.Parity = (byte)0; PortDCB.StopBits = (byte)0; if (!Win32Com.SetCommState(hPort, ref PortDCB)) { return false; } if (!Win32Com.SetCommTimeouts(hPort, ref CommTimeouts)) { return false; } Win32Com.CancelIo (hPort); Win32Com.CloseHandle (hPort); return true; }System.IntPtr pHandle; int handle; //opens the existing file... handle = CreateFile(fileName, GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); pHandle=new System .IntPtr (handle); FileStream fs=new FileStream (pHandle,FileAccess.Write );string s; byte[] byteOut; Int32 dwCount = s.Length; byteOut = new byte[dwCount]; // for (int i = 0;i<dwCount;i++) // { // // ByteStrings.to // byteOut[i] = System.Convert.ToByte( s[i]); //// } byteOut=Encoding.ASCII .GetBytes (s); // How many characters are in the string? fs.Write (byteOut,0,dwCount); fs.Flush (); fs.Close (); Win32Com.CloseHandle (pHandle); return true; } 你可以用控件,也可以用api直接写的,mscom.ocx是vb的,不需要到网上找的,需要向注册表写入vb的信息才能在c#下使用。你可以用serialport这个控件,挺不错的,具体到google上面搜索一下。 怎么用api直接写啊,我不想用控件,我想自己编写这个通信程序 如何将从SQL数据库里查询出来的数据给DataTable赋值?(听说标题长的回帖率高-!!) WinCE的程序,如何防止程序重复运行? 一个登录显示问题 求 TreeView 遍历 menustrip 里面的菜单选项通用的方法(WinForm)!回答者均有分!! 求打印多页TIFF文件的代码 C#中如何定义全局变量 关于WinForm中TreeView的几个疑惑 双网卡机器中,如何分辨哪个是内网IP和哪个是外网IP -=来看看!=- 求解怎么调用js C#中DataTable.Select()出错了...., 附详细信息 在Web里面如何弹出messagebox消息框?
http://msdn.microsoft.com/msdnmag/issues/02/10/netserialcomm/default.aspx
public static bool InitComm(string com)
{
Win32Com.DCB PortDCB = new Win32Com.DCB();
Win32Com.COMMTIMEOUTS CommTimeouts = new Win32Com.COMMTIMEOUTS();
Win32Com.OVERLAPPED wo = new Win32Com.OVERLAPPED();
IntPtr hPort;
hPort = Win32Com.CreateFile(com, Win32Com.GENERIC_READ | Win32Com.GENERIC_WRITE, 0, IntPtr.Zero,
Win32Com.OPEN_EXISTING, Win32Com.FILE_FLAG_OVERLAPPED, IntPtr.Zero);
if (hPort == (IntPtr)Win32Com.INVALID_HANDLE_VALUE)
{
return false;
} //JH1.1: Changed from 0 to "magic number" to give instant return on ReadFile:
CommTimeouts.ReadIntervalTimeout = Win32Com.MAXDWORD;
CommTimeouts.ReadTotalTimeoutConstant = 0;
CommTimeouts.ReadTotalTimeoutMultiplier = 0;
CommTimeouts.WriteTotalTimeoutMultiplier=1000;
CommTimeouts.WriteTotalTimeoutConstant = 0;
Win32Com.GetCommState (hPort,ref PortDCB);
PortDCB.BaudRate = 9600;
PortDCB.ByteSize = 8;
PortDCB.Parity = (byte)0;
PortDCB.StopBits = (byte)0;
if (!Win32Com.SetCommState(hPort, ref PortDCB))
{
return false;
}
if (!Win32Com.SetCommTimeouts(hPort, ref CommTimeouts))
{
return false;
}
Win32Com.CancelIo (hPort);
Win32Com.CloseHandle (hPort);
return true;
}
System.IntPtr pHandle;
int handle;
//opens the existing file...
handle = CreateFile(fileName,
GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
0);
pHandle=new System .IntPtr (handle);
FileStream fs=new FileStream (pHandle,FileAccess.Write );
string s;
byte[] byteOut;
Int32 dwCount = s.Length;
byteOut = new byte[dwCount];
// for (int i = 0;i<dwCount;i++)
// {
// // ByteStrings.to
// byteOut[i] = System.Convert.ToByte( s[i]);
//
// }
byteOut=Encoding.ASCII .GetBytes (s);
// How many characters are in the string?
fs.Write (byteOut,0,dwCount);
fs.Flush ();
fs.Close ();
Win32Com.CloseHandle (pHandle);
return true;
}