none
Hyperterminal not printing the data until after a complete line RRS feed

  • Question

  • Hi,

    I am developing a serial driver and i am trying to test it's read and write functionality using Hyperterminal. I have connected the serial port in loop back mode.  hence i am expecting the characters that i type to be received by Hyperterminal and be printed on the screen.

    After launching Hyperterminal and connecting to the port successfully, when i type characters i am not seeing them until i finish typing the entire line i.e. 80 characters. But i am expecting to see each character that i type to be  seen on the Hyperterminal screen.

    From my driver logs, i am seeing that Hyperterminal is sending a read request for 80 bytes. I think this is the root cause of the above behavior. But using Microsoft serial driver sample i am seeing that i am able to receive each character back on the Hyperterminal screen.

    What could be the reason that Hyperterminal is sending the read request for 80 bytes but not for a single character ? How can i control this ?

    ANy help is greatly appreciated.. 

    Monday, August 25, 2014 11:07 AM

All replies

  • Most programs send a buffer bigger than one character, there are a lot of good reasons for this, but mainly so the kernel does not have to buffer large amounts.   Your design is not handling things like the timeout IOCTL's correctly, the Windows serial model is vary rich, so most of us just modify the Windows serial driver.  In your case you will need to walk through the sample's read.c and understand all it is doing, and make your driver support the same. 

    Be aware, that given that reads are having problems like this probably means that writes and other operations are also going to encounter problems.  You need to go back and study the sample completely, and you may want to build it and load it on a system with a standard serial port so you can see debug how it works.


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com

    Monday, August 25, 2014 11:39 AM
  • HI Don,

    Thanks for your response so far. I figured out the problem in the my code. While i am timing out a request in my Interval timer (Hyperterminal sets the interval time out to 10 ms) I was not giving the data that i have at that moment to application.  After doing it i found i am able to see each and  character  every character that i type on the Hyperterminal screen.

    I am implement GUID_DEVINTERFACE_COMPORT in my serial driver and i am implementing drivers for  a multi port serial card.

    However i am now seeing another issue. When i copy some text and try to paste it on to  Hyperterminal window, Hyperterminal is hanging and the data is not getting transmitted. I can't see anything in the driver logs. 

    What is expected is that the content should be transmitted through the target COM port and hence it should appear back on the screen (since i have connected the port in loopback mode)

    Could this be related to an issue in implementation of write in my driver? I tested the write functionality multiple times with various applications (test cases like writing data in bulk  to the COM port, etc) and they all passed. 

    I am curious about what is the difference in pasting the content on the Hyperterminal screen  and typing characters manually. In both cases the app must be sending a write command to the target COM port (with a different payload in both cases although).  
    Tuesday, August 26, 2014 6:38 AM