我有这个C++代码,我需要把它翻译成C#。
*hDev = CreateFile(PortNameUNC, GENERIC_READ|GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(*hDev == INVALID_HANDLE_VALUE) return false ;
DCB *dcb = new DCB ;
memset(dcb, 0x00, sizeof(DCB)) ;
dcb->DCBlength = sizeof(DCB);
dcb->BaudRate = BaudRate;
dcb->Parity = Parity;
dcb->StopBits = StopBits;
dcb->ByteSize = ByteSize;
dcb->fBinary = TRUE;
dcb->fDsrSensitivity = 0;
dcb->fDtrControl = (DTR ? DTR_CONTROL_ENABLE : DTR_CONTROL_DISABLE) ;
dcb->fRtsControl = (RTS ? RTS_CONTROL_ENABLE : RTS_CONTROL_DISABLE) ;
dcb->fOutxCtsFlow = (CTS ? 1 : 0) ;
dcb->fOutxDsrFlow = (DSR ? 1 : 0) ;
dcb->fOutX = (XonnXoff ? 1 : 0) ;
dcb->fInX = 0 ;我成功地在C#上翻译了其中的大部分内容。
m_port = new SerialPort(portName, baudRate, parity, dataBits, stopBits);但是我不知道如何设置像DTR, RTS, CTS, DSR and Xonn/Xoff?这样的属性
我在Dtr.Enable和Rts.Enable上找到了SerialPort属性,但是其他三个属性该怎么办呢?CTS,DSR和Xonn/Xoff?怎样才能使他们有能力?
编辑:还有,这是我上面的C#实现。,我是否正确地将C++代码映射到C#,如下所示?,特别是xon/xoff标志,dtr和rts
public SerialPortHASP(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits, bool dtr, bool rts, bool xonxoff)
{
m_port = new SerialPort(portName, baudRate, parity, dataBits, stopBits);
// Set XonXoff if set
if (xonxoff)
m_port.Handshake = Handshake.XOnXOff;
// Set DTR/RTS
m_port.DtrEnable = dtr;
m_port.RtsEnable = rts;
// Open the port for communications
m_port.Open();
}发布于 2015-09-29 11:25:54
CTS和DSR是输入,因此不能从代码中设置它们。可以通过访问以下属性来检查它们: CtsHolding和DsrHolding。
XOnXOff是一个流控制,可以使用串口握手属性进行设置。
https://stackoverflow.com/questions/32842095
复制相似问题