Serial cables... serial communications
-
It's not a programming question :-\ Maybe someone's serial cable fu is better than mine. I'm looking for some practical insight on serial communications at the PC level. Older machines, larger boxes may still have built in com ports exposed at the back, but most of us are living in the land of usb to serial. For the sake of discussion, the ports in use are confirmed to have the same settings - 9600 baud, 8 bit, 1 stop bit, no handshake or anything else.... Living in the embedded world, we'll solder up a home made serial cable in a few minutes - DB9 to DB9 - connector pins 2-3, pin 5 for the ground (swapping pin 2 and 3 gives you a null modem cable). On the embedded hardware, this is typically all we need to do... but I'm finding PC level usage of this hand crafted cable problematic. If I take a typical null modem cable: 10 ft DB9 RS232 Serial Null Modem Cable | Null Modem Serial Cables | StarTech.com[^] everything works fine. If I take my stripped down special, no communications. I've verified that both cables are wired the same - with the exception that the commercial product connects the other 6 pins according to standards. I've been told these other connections are not necessary, but said engineers are talking to embedded hardware not another PC. Wondering if an CP folks have some practical scars and insights in this area that would shed some light on this behavior. I'm going to tell the customer to go buy a serial cable, but now I'm curious. thanks
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Two most common causes of mistakes I've faced: 1. Cable crossed or straight. That ties in neatly into male vs. female connectors. At the end, I've built myself an own cable tester to find out which is straight and which is crossed. 2. Hardware flow control lines. Some devices use them, some don't and if a device uses that, you better solder the lines in place.
-
It's not a programming question :-\ Maybe someone's serial cable fu is better than mine. I'm looking for some practical insight on serial communications at the PC level. Older machines, larger boxes may still have built in com ports exposed at the back, but most of us are living in the land of usb to serial. For the sake of discussion, the ports in use are confirmed to have the same settings - 9600 baud, 8 bit, 1 stop bit, no handshake or anything else.... Living in the embedded world, we'll solder up a home made serial cable in a few minutes - DB9 to DB9 - connector pins 2-3, pin 5 for the ground (swapping pin 2 and 3 gives you a null modem cable). On the embedded hardware, this is typically all we need to do... but I'm finding PC level usage of this hand crafted cable problematic. If I take a typical null modem cable: 10 ft DB9 RS232 Serial Null Modem Cable | Null Modem Serial Cables | StarTech.com[^] everything works fine. If I take my stripped down special, no communications. I've verified that both cables are wired the same - with the exception that the commercial product connects the other 6 pins according to standards. I've been told these other connections are not necessary, but said engineers are talking to embedded hardware not another PC. Wondering if an CP folks have some practical scars and insights in this area that would shed some light on this behavior. I'm going to tell the customer to go buy a serial cable, but now I'm curious. thanks
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
-
If you can get at the comm port settings, set Handshaking to NONE. It should then ignore everything except the RX/TX.
Remember to cross your fingers as well, hoping for the receiver always being ready to pick up another byte when the sender insists on transmitting it. Flow control was included for a reason. Sure, most of our modern CPUs are so fast that they can "always" keep up with a COM port, but if it in exceptional cases are busy with something else, it is still nice to be able to tell the sender "Could you hold it for a little while?"
-
Remember to cross your fingers as well, hoping for the receiver always being ready to pick up another byte when the sender insists on transmitting it. Flow control was included for a reason. Sure, most of our modern CPUs are so fast that they can "always" keep up with a COM port, but if it in exceptional cases are busy with something else, it is still nice to be able to tell the sender "Could you hold it for a little while?"
-
You still need to wire up a few more pins. RS-232 and RS-422[^] 3/4's of the way down are diagrams for null modem / crossover cables. See also the diagram after the null model cable, on the software handshaking cable. Even if you don't use software handshaking, wiring it up that way is a good idea.
Latest Article - Slack-Chatting with you rPi Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
Yeah - I should know that list of alternate null modems by heart; in the 1990s I was teaching that stuff to engineering students. All the different alternatives for flow control. Soldering it was a minor problem, compared to making the students understand the need for flow control - and the need for so many different mechanisms. With X-ON / X-OFF (software control) coming in as yet another alternative. The survey you link to is a good description of the issues. Recommended reading for anyone who needs to use COM port communication anno 2019.
-
It's not a programming question :-\ Maybe someone's serial cable fu is better than mine. I'm looking for some practical insight on serial communications at the PC level. Older machines, larger boxes may still have built in com ports exposed at the back, but most of us are living in the land of usb to serial. For the sake of discussion, the ports in use are confirmed to have the same settings - 9600 baud, 8 bit, 1 stop bit, no handshake or anything else.... Living in the embedded world, we'll solder up a home made serial cable in a few minutes - DB9 to DB9 - connector pins 2-3, pin 5 for the ground (swapping pin 2 and 3 gives you a null modem cable). On the embedded hardware, this is typically all we need to do... but I'm finding PC level usage of this hand crafted cable problematic. If I take a typical null modem cable: 10 ft DB9 RS232 Serial Null Modem Cable | Null Modem Serial Cables | StarTech.com[^] everything works fine. If I take my stripped down special, no communications. I've verified that both cables are wired the same - with the exception that the commercial product connects the other 6 pins according to standards. I've been told these other connections are not necessary, but said engineers are talking to embedded hardware not another PC. Wondering if an CP folks have some practical scars and insights in this area that would shed some light on this behavior. I'm going to tell the customer to go buy a serial cable, but now I'm curious. thanks
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
I've read through everything, and I'll suggest the one thing that noe one else has :-) You said you have a number of pins not connected right? WOuld they at all happen to all be grounds? A 10ft cable that's NOT properly shielded will loose quite a lot to stray radio waves in the surrounding environment. I have a 10 meter one that I can drop down out of my Loft hatch and into my PC in the office below, fro when I need to reprogram the switch in my server rack. Over the years, it's starting to get old, and I can tell straight away when the shielding is starting to come loose. The shorter the cable is, the less shielding matters, the GPS plugged into my PC for example has a really thin unshielded cable on it, but it's only a meter in length, the switch programming cable is a nightmare, we have so much wireless kit in our house with Phones, Thermostats, WiFi based TV's and Wifi capable smoke alarms that it's often better for me to find the shorter cable and drag either the PC system unit or one of the older laptops with a 9 pin on up intot he loft and do the work up there. Cisco flat cables with an RJ45 on that are longer than about 3 meters are terrible, they pick up all kinds of crap, so much so I have some old ferrite chokes lying around that I salvaged from old electronics, and wraping the cable through them a couple of times, one at each end near the plugs, usually helps a lot.
-
What piece of software are you using on PC side? In one of our legacy app we are using the WIN32 API to control the COM port. Since USB2Serial Adapter we made the often the expierience that we need additional to ...
dcb.fInX = 0;
dcb.fOutX = 0;... where dcb which is explained here: _DCB | Microsoft Docs[^]
It does not solve my Problem, but it answers my question
Ah yes, the DCB :) When I inherited this code, no one thought to initialize that structure before use.... The s/w on the PC side is a simulation test tool (implements communications protocol for some ancient piece of equipment). I have full control over it. I'll see what's going on over there...
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
-
It's not a programming question :-\ Maybe someone's serial cable fu is better than mine. I'm looking for some practical insight on serial communications at the PC level. Older machines, larger boxes may still have built in com ports exposed at the back, but most of us are living in the land of usb to serial. For the sake of discussion, the ports in use are confirmed to have the same settings - 9600 baud, 8 bit, 1 stop bit, no handshake or anything else.... Living in the embedded world, we'll solder up a home made serial cable in a few minutes - DB9 to DB9 - connector pins 2-3, pin 5 for the ground (swapping pin 2 and 3 gives you a null modem cable). On the embedded hardware, this is typically all we need to do... but I'm finding PC level usage of this hand crafted cable problematic. If I take a typical null modem cable: 10 ft DB9 RS232 Serial Null Modem Cable | Null Modem Serial Cables | StarTech.com[^] everything works fine. If I take my stripped down special, no communications. I've verified that both cables are wired the same - with the exception that the commercial product connects the other 6 pins according to standards. I've been told these other connections are not necessary, but said engineers are talking to embedded hardware not another PC. Wondering if an CP folks have some practical scars and insights in this area that would shed some light on this behavior. I'm going to tell the customer to go buy a serial cable, but now I'm curious. thanks
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Gentlemen, Excellent suggestions all with debugging the cable differences. I'm going to have to file this under face-palm. :doh: It is a true statement that simple serial communications only require the 3 wires, we do it all the time on various projects. Points go to Mr. DCB suggestion man - if one's handling of the data is fast enough, you really don't need Dtr and Rts control wires. But if your application enables them in the DCB, you're going to need to hook them up. So, the mystery is solved, and there is a lot of good info in this discussion. Thanks to all of you.
Charlie Gilley Most life and software issues can be solved by checking your inputs.... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
-
If I have the option - and flow control is needed, I prefer to use software handshaking (XON/XOFF)
And it works over a 2 line connection, such as a POTS line. BUT: It is not bit transparent. And it requires the sender to respond fast enough. The latency is generally a lot higher with software flow control. I was teaching networks at college level in the 1990, when 622 Mbps B-ISDN and ATM was still an option, and optic fibers were becoming commonplace, running for 50 km or more without repeaters. (They could run for much greater distances even in the 1990s, but towns are usually no further apart.) I used to start first lecture on B-ISDN with a question: How big is a bit? How many centimeters long? Light in a fiber moves at roughly 200,000,000 m/s. If you sende 622,000,000 per second, that gives them about 30 cm each. Before the first bit has come to the end of a 50,000 m long fiber, you have poured in more than 150,000 bits. And before the STOP!!! signal has come back to you, you have sent another 150,000 bits down the line. Now, let us see how well our basic frame mechanimsm from lower speed lines works under those conditions... Lots of the students first thought I had made an error in the calculation, missing by a factor of a thousand. After checking and counting zeroes, they shook their head with a "But... What shall we do then?". (The next layer-1 protocol we treated was DQDB - another now forgotten alternative, which is a pity; it did have something going, with its reservation scheme. It never made any success, but we should learn for failures, too - failure in the market doesn't prove that it was without merits. Around 1990 it taught the students that there is more than one way to skin a flow control cat!)
-
Ah yes, the DCB :) When I inherited this code, no one thought to initialize that structure before use.... The s/w on the PC side is a simulation test tool (implements communications protocol for some ancient piece of equipment). I have full control over it. I'll see what's going on over there...
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
-
It's not a programming question :-\ Maybe someone's serial cable fu is better than mine. I'm looking for some practical insight on serial communications at the PC level. Older machines, larger boxes may still have built in com ports exposed at the back, but most of us are living in the land of usb to serial. For the sake of discussion, the ports in use are confirmed to have the same settings - 9600 baud, 8 bit, 1 stop bit, no handshake or anything else.... Living in the embedded world, we'll solder up a home made serial cable in a few minutes - DB9 to DB9 - connector pins 2-3, pin 5 for the ground (swapping pin 2 and 3 gives you a null modem cable). On the embedded hardware, this is typically all we need to do... but I'm finding PC level usage of this hand crafted cable problematic. If I take a typical null modem cable: 10 ft DB9 RS232 Serial Null Modem Cable | Null Modem Serial Cables | StarTech.com[^] everything works fine. If I take my stripped down special, no communications. I've verified that both cables are wired the same - with the exception that the commercial product connects the other 6 pins according to standards. I've been told these other connections are not necessary, but said engineers are talking to embedded hardware not another PC. Wondering if an CP folks have some practical scars and insights in this area that would shed some light on this behavior. I'm going to tell the customer to go buy a serial cable, but now I'm curious. thanks
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
As I recall from my college work-study program forty years ago, that's the way we wired up RS-232 terminals: four wires, two of them ground. My memory is no longer great, but I know we had 25-pin connectors, and I'm thinking in that world pin 1 was ground, 3 & 4 swapped, and 8? was a second ground. I have nothing to help you, but thank you for bringing back memories of some good times! :-D
-
It's not a programming question :-\ Maybe someone's serial cable fu is better than mine. I'm looking for some practical insight on serial communications at the PC level. Older machines, larger boxes may still have built in com ports exposed at the back, but most of us are living in the land of usb to serial. For the sake of discussion, the ports in use are confirmed to have the same settings - 9600 baud, 8 bit, 1 stop bit, no handshake or anything else.... Living in the embedded world, we'll solder up a home made serial cable in a few minutes - DB9 to DB9 - connector pins 2-3, pin 5 for the ground (swapping pin 2 and 3 gives you a null modem cable). On the embedded hardware, this is typically all we need to do... but I'm finding PC level usage of this hand crafted cable problematic. If I take a typical null modem cable: 10 ft DB9 RS232 Serial Null Modem Cable | Null Modem Serial Cables | StarTech.com[^] everything works fine. If I take my stripped down special, no communications. I've verified that both cables are wired the same - with the exception that the commercial product connects the other 6 pins according to standards. I've been told these other connections are not necessary, but said engineers are talking to embedded hardware not another PC. Wondering if an CP folks have some practical scars and insights in this area that would shed some light on this behavior. I'm going to tell the customer to go buy a serial cable, but now I'm curious. thanks
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
You're right. You only need 3 wires for duplex communication. Assuming you connected these wires correctly. the next question is what kind of cable are you using. Transmission lines cause reflections and energy loss. At 10 feet, your cable is long enough to be affected by it. If you're using 3 loose wires, that's a problem; try twisting the wires together. Ideally, you want 100 ohm impedance with 24 AWG wire. If you're using a pre-built cable, check the specs. It may be designed for something else. I also suggest you make sure both computers are powered from the same circuit; otherwise, you may have issues with ground loops.
-
As I recall from my college work-study program forty years ago, that's the way we wired up RS-232 terminals: four wires, two of them ground. My memory is no longer great, but I know we had 25-pin connectors, and I'm thinking in that world pin 1 was ground, 3 & 4 swapped, and 8? was a second ground. I have nothing to help you, but thank you for bringing back memories of some good times! :-D
Close. For D25, it's 2&3 for data, 4&5 for RTS/CTS, 6 is DSR, 7 is signal ground (Not always the same as 1 which is chassis ground), 8 is DCD, 20 is DTR, 22 is RI. The rest are normally N/C.
Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!
-
It's not a programming question :-\ Maybe someone's serial cable fu is better than mine. I'm looking for some practical insight on serial communications at the PC level. Older machines, larger boxes may still have built in com ports exposed at the back, but most of us are living in the land of usb to serial. For the sake of discussion, the ports in use are confirmed to have the same settings - 9600 baud, 8 bit, 1 stop bit, no handshake or anything else.... Living in the embedded world, we'll solder up a home made serial cable in a few minutes - DB9 to DB9 - connector pins 2-3, pin 5 for the ground (swapping pin 2 and 3 gives you a null modem cable). On the embedded hardware, this is typically all we need to do... but I'm finding PC level usage of this hand crafted cable problematic. If I take a typical null modem cable: 10 ft DB9 RS232 Serial Null Modem Cable | Null Modem Serial Cables | StarTech.com[^] everything works fine. If I take my stripped down special, no communications. I've verified that both cables are wired the same - with the exception that the commercial product connects the other 6 pins according to standards. I've been told these other connections are not necessary, but said engineers are talking to embedded hardware not another PC. Wondering if an CP folks have some practical scars and insights in this area that would shed some light on this behavior. I'm going to tell the customer to go buy a serial cable, but now I'm curious. thanks
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Serial ports. Oh the pain, the pain. I have a whole box of serial cables that I have accumulated over 20 years of use. I have male-female, female-female, and male-male straight-through cables, and a null modem cable. This lets me make up whatever is called for. I verify my connection using one or two of these cables, then build a custom cable. If the custom cable doesn't work, I know it's the cable. You can connect a serial port using only transmit, receive, and ground, but even at 9600 baud, a steady stream of bytes is likely to overrun your PC's receiver buffer. That's why you want to connect RTS and CTS, which do hardware handshaking. You can do software handshaking using XON and XOFF if your USB-serial box understands that and your terminal software understands that.
-
Close. For D25, it's 2&3 for data, 4&5 for RTS/CTS, 6 is DSR, 7 is signal ground (Not always the same as 1 which is chassis ground), 8 is DCD, 20 is DTR, 22 is RI. The rest are normally N/C.
Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!
Must have been 1, 2, 3 & 7. A forty year span is a LONG time to maintain an image in one's mind. Connecting terminals to a PDP-11/34; life was simple back then. Old men want a time machine because the past looks better, or at least longer, than the future.
-
Must have been 1, 2, 3 & 7. A forty year span is a LONG time to maintain an image in one's mind. Connecting terminals to a PDP-11/34; life was simple back then. Old men want a time machine because the past looks better, or at least longer, than the future.
Yeah ... it's been over 25 years since I last wired RS323, and even that was probably D9 not D25. And I probably cheated and wired via my datascope which had a patch box built in. :laugh: (Life was easier when you could actually see the data with a scope)
Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!
-
It's not a programming question :-\ Maybe someone's serial cable fu is better than mine. I'm looking for some practical insight on serial communications at the PC level. Older machines, larger boxes may still have built in com ports exposed at the back, but most of us are living in the land of usb to serial. For the sake of discussion, the ports in use are confirmed to have the same settings - 9600 baud, 8 bit, 1 stop bit, no handshake or anything else.... Living in the embedded world, we'll solder up a home made serial cable in a few minutes - DB9 to DB9 - connector pins 2-3, pin 5 for the ground (swapping pin 2 and 3 gives you a null modem cable). On the embedded hardware, this is typically all we need to do... but I'm finding PC level usage of this hand crafted cable problematic. If I take a typical null modem cable: 10 ft DB9 RS232 Serial Null Modem Cable | Null Modem Serial Cables | StarTech.com[^] everything works fine. If I take my stripped down special, no communications. I've verified that both cables are wired the same - with the exception that the commercial product connects the other 6 pins according to standards. I've been told these other connections are not necessary, but said engineers are talking to embedded hardware not another PC. Wondering if an CP folks have some practical scars and insights in this area that would shed some light on this behavior. I'm going to tell the customer to go buy a serial cable, but now I'm curious. thanks
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
-
No need. The mystery - why did one cable work and the hand made cable didn't - answered by checking the source code. If you ask for handshake, you need to provide the appropriate cabling. Simple brainfart on my part.
Charlie Gilley <italic>Stuck in a dysfunctional matrix from which I must escape... "Where liberty dwells, there is my country." B. Franklin, 1783 “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759