ComPort.Handshake = Handshake.None;
问题不在于没有触发DataReceived事件,而是串口没有接收任何数据。很少有完全不使用握手的串行设备。如果将其设置为None,则驱动程序将不会打开DTR(数据终端就绪)和RTS(请求发送)信号。哪个串行端口设备解释为“计算机已关闭(DTR)”或“计算机尚未准备好接收数据(RTS)”。因此,它将不会发送任何内容,并且不会触发您的DataReceived事件。
如果您 真的 想要无,则将DTREnable和RTSEnable属性设置为true。但是您可能需要HandShake.RequestToSend,因为设备似乎正在注意握手信号。
如果仍然有问题,请使用其他串口程序(例如Putty或HyperTerminal)来确保连接和通信参数良好并且设备可以响应。SysInternals的PortMon实用程序提供了驱动程序交互的低级视图,因此您可以比较好坏。