serial terminal hex time stamped - Page 1
Forum section: electronics / projects

author: stern0m1
author_rank: Contributor
timestamp: August 26, 2018, 03:59:42 pm
content: Hi,Im looking for a serial terminal for windows that display and sends the raw bytes in hex with each byte time stamped.Any ideas?The most I could find was Realterm but I dont see how to time stamp each byte.Thanks

author: TomS_
author_rank: Frequent Contributor
timestamp: August 26, 2018, 04:39:00 pm
content: I get the feeling that this is quite a specialised requirement. I dont think there are too many out there that need such a fine grained record of every byte. Strings of text, e.g. those ending in CRLF style terminations maybe, but byte wise is pretty unusual.Perhaps you would need to write your own custom terminal to do precisely this. I know for a fact that you should be able to get something going within a very short period of time using Visual Basic - the serial port library isveryeasy to use.Give it a go.

author: ajb
author_rank: Super Contributor
timestamp: August 26, 2018, 11:18:34 pm
content: HTermwill do timestamps, and can display Hex, Dec, Bin, and Ascii. It hasn't been updated since 2008, but it works fine on Win10, and is still my preferred terminal actually.However, it won't timestamp every byte. How precise are you looking to get with these timestamps, and what data rate are you receiving at? I think there's going to be a significant limit to what you can achieve at the OS level, especially if using a USB serial interface, where each transaction is generally going to be several bytes long.If you need better precision and the data rate isn't too crazy, you could use an MCU with a UART and a hardware timer to capture timestamps for every byte and then package that data up to go to the PC in whatever format you want (USB CDC examples are readily available for most USB-enabled MCUs, or you could even fire the data out another UART port).

author: r0d3z1
author_rank: Regular Contributor
timestamp: November 13, 2021, 01:53:43 pm
content: HTerm really save me a lot of time thanks.

author: Renate
author_rank: Super Contributor
timestamp: November 14, 2021, 11:24:35 am
content: Actually, there are some tradeoffs between using a desktop hard UART and a USB UART.What you want generally is to get all the contiguous bytes in one chunk and anything separated with a gap in another chunk.That's going to be difficult with a desktop OS hard UART.With a USB UART there is a limit of buffer size and breaking long chunks into multiple chunks.The FTDI USB UART has a variable timeout to identify a gap.It can be set in milliseconds with FTDI_SET_LATENCY_TIMER vendor-specific USB control request.In Linux, that makes it:Code:struct serial_struct serial;code=ioctl(fd, TIOCGSERIAL, &serial);serial.flags|=ASYNC_LOW_LATENCY;code=ioctl(fd, TIOCSSERIAL, &serial);I rolled my own fake FTDI UART once with a latency timer of 200 µS for Modbus at 115.2k.

author: Psi
author_rank: Super Contributor
timestamp: November 14, 2021, 11:28:31 am
content: Keep in mind that windows doesn't send serial bytes one at a time or as you write them out from your app.There is a buffer, when the buffer is full the entire buffer is sent over serial as one block.There is also a timeout on the buffer, if some time has passed and data in the partially full buffer is getting old then the buffer is sent anyway.At least that is usually how it works, various USB serial drivers and apps can work a bit differentMaybe what you really need is a USB logic analyzer. That will decode your serial bytes and tell you exactly when they were sent

author: OliverH
author_rank: Newbie
timestamp: March 10, 2022, 08:42:12 pm
content: QuoteOn Windows, Docklight can do that with accurate time stamps. It can also insert inter-character delays, but as the previous posters wrote, for modern USB-based connectivity it doesn't mean the data was on the serial line with this exact timing.On Windows, the mentioned FTDI_SET_LATENCY_TIMER can be set in the Device Manager: Run devmgmt.msc, go to your COM port Properties, then Advanced, and set the "Latency Timer" to the minimum value 1.The screenshots show a small loopback test I just made with an FTDI-based USB-to-RS232 and increasing delay between the TX characters: 10ms, 20ms, 30ms, 40ms, 50ms. Only with >= 30 ms delays the characters are received individual bytes.For any precision-timing for transmitting data, I'd probably use a pyboard, Arduino or something. For any precise level & byte/bit timing diagnostics, the wonderful Picoscope!

author: Benta
author_rank: Super Contributor
timestamp: March 10, 2022, 08:44:45 pm
content: I have a feeling that the OP has solved the problem after five months...But interesting that one of the developers of Docklight is called:Oliver Heggelbacher.How low can you go?

author: floobydust
author_rank: Super Contributor
timestamp: March 10, 2022, 08:54:44 pm
content: What is so low? I don't understand. Is it referring to the product athttps://docklight.de/?

author: Benta
author_rank: Super Contributor
timestamp: March 10, 2022, 10:03:13 pm
content: Quote from: floobydust on March 10, 2022, 08:54:44 pmWell:one post.old thread.OliverH(eggelbacher) plugs own product?How desperate can you get?

author: wootwoot
author_rank: Contributor
timestamp: May 24, 2025, 10:34:22 am
content: Just to make you happy Benta I'm going to postHope you don't get up people for re-asking questions thenNothing wrong with posting useful info on old threads.People often dig up these threads on google, just like I did.

author: spostma
author_rank: Regular Contributor
timestamp: May 26, 2025, 04:36:16 pm
content: It is good to know that nearly all USB to serial chips are full-speed 12Mbps USB1.x UART devices,and thus have at best a 1ms timing resolution (either by using a latency timer of 1ms, or by using event character triggering).480Mbps high-speed USB2 devices use 1/8ms microframes, and thus could allow much better 125us timestamping.USB2 to serial devices that I know of are all made by WCH: CH347 CH344 CH348 CH9114 CH9344,so these would naturally be the first choice for real-time serial communication protocol analysis.However, I do not know if these support latency timers or configurable event characters for minimum latency.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: May 27, 2025, 03:05:40 am
content: Quote from: spostma on May 26, 2025, 04:36:16 pmThere have been many improvements since this thread started 8 years ago.Parts like CH347 are low cost and manage HS-USB, but a downside of more advanced cores is they tend to include FIFOs on the UARTS, and that makes hard timing not as simple.The OP has not defined what time resolution was needed, but another new part that could manage this nicely, is the Pi PICO PIO peripheral. (RP2040 RP2350)The web has some examples :This samples many pins and sends pin change and time stamp, with a 16MHz sample ratehttps://j-hui.com/publications/hui2023timestamp.pdfThis polls a single pin, and sends rise-edge time stamps only, but the simpler sampling means two interleaved can resolve to 1 sysclk, or < 10nshttps://people.ece.cornell.edu/land/courses/ece4760/RP2040/C_SDK_PIO_control/Input_capture/index_pio_control.htmlThis is a PIO UART example, which clocks a simple state engine at BAUD * 8https://github.com/Sympatron/pio-uart/blob/master/src/uart_rx.pioA morph of all 3 could likely yield a custom UART, with bit timing and time stamp combined.* SW UART sampling at pCLK/8-pCLK/128* Time stamp Resolution of 32 bits at pCLK on the start bit edge (ie appx 10ns)The FS-USB link would limit the sustained BAUD rate to maybe 1~1.5Mbd (10us per byte) to send 1 CHAR and 4 bytes of timestamp for each received byte.Bursts of up to maybe 12MBd might be possible, with on chip RAM buffers.It might be useful to capture gaps between bytes > single stop bit.Someone might design a system that uses the choice of 1 or 2 stop bits as a phantom data path, or they could modulate stop bits along the lines of SENT protocol.Pi PICOs are always crystal operating, so there is a lot of scope here.