上位机发出指令后,下位机以2毫秒为周期发送数据,每次发送48个字节。上位机收到数据后还要进行处理。目前程序使用的是CSerialPort类进行编程,用消息响应函数OnComm()来接受字节。也就是说,每1毫秒,OnComm()函数就要运行48次……目前俺已经将OnComm()函数做到最简单,仅将48个字节存入一字符数组内,达到48格式另外调用解算函数。就这样用串口助手调试也只能做到大概20毫秒周期发送,再快了就崩溃……这个问题应该怎么处理比较好俺这个机器配置还是挺高的E8400,2G内存

解决方案 »

  1.   

    CSerialPort 不大适合你的需求,还是自己写个类吧
      

  2.   

    你是在做采集卡吧
    高速通信可能不能用串口了吧
    是不是应该考虑用USB或者DMA通道
      

  3.   

    用API自己写串口处理吧,另外,上位机发送指令后下位机是否自动往串口以间隔2ms的周期发字节流而无需再次上位机发指令读取?应该考虑多线程外加缓冲机制来解析数据。
      

  4.   

    串行应用千变万化,唯一不变的就是开线程死读,其他的都是虚的,特别是CSerialPort。
      

  5.   

    上位机无需再次发送。开缓冲我怕早晚有超限那一天,因为需要长时间通讯,起码是2~3小时起步的……还有一个问题挺奇怪,俺这个通讯板卡,虽然自带了库函数可以调用,但是操作系统将其识别为一个通讯口(COM4),默认波特率是9600,这肯定速度肯定是慢的。可是不妨碍我通讯,不知道怎么回事……
      

  6.   

    Windows默认驱动串口应该最高只能到115200。楼主这个接近26400了,应该是采用的串口转换卡和配套的驱动。他内部有FIFO芯片,会为你做一定的缓冲。