Morse via CWCom
Colin Ferris (399) 1818 posts |
On Windows side there is a Morse Code program called ‘CWCom’ which uses a server ’morsecode.dyndns.org on port 7890. It tries to replicate multiple channels – like a radio. It also broadcasts ‘CW’ news on some of its channels. (note you can use the keyboard to send as well as a morse key) Is there a way of finding out how the ‘CWCom’ interacts with the Server? Thanks |
Rick Murray (539) 13850 posts | |
Colin Ferris (399) 1818 posts |
Thanks Rick – is there anyway of working out how the Morse Server works. Seems there is a Python implementation for the Raspi (Linux?) |
Steve Pampling (1551) 8172 posts |
Following the very discretely highlighted links you end up at this github page which is a set of C source for Linux. |
Colin Ferris (399) 1818 posts |
It looks like the morse code is timed – and each letter sent as a packet – and received by the Morse code Server. Which is then re-broadcast to all those connected to the Morse code Server. Are there any examples using RO – of how to connect to Servers? Looking at !LIRC – you log into the chosen Server – and then join a channel like ‘riscos’. The morse code Server you join – password? – and then join channels – which have numbers like 1000. Any ideas how to check this Morse code Server out? Thanks |
Colin (478) 2433 posts |
If you use C this may help. It’s a demonstration program I did a while back for minimal client and server programs. You are interested in the client and the c.terminal file is the one that would change most in your application. Once connected to the server and port you read lines with the socketread part of terminal.c and write lines with the socketwrite part. There should be a protocol for the server telling you how to interpret data sent to you and what to send. |
Colin Ferris (399) 1818 posts |
Comming back to this – I have found a group that seems to support ‘Morse over the Internet’. (MorseKOB) What questions would be wise – to ask them about the ‘Protocol’ used. They do a ‘Python’ prog – is there a way to convert this into ‘BASIC’? Thanks |
Rick Murray (539) 13850 posts |
Do you understand Python? ;-) If not, do you have a PC connected to the Internet via cable (not WiFi)? If so, run the program and WireShark it to see what data is actually being sent and how (is the morse binary encoded? is it a string of 0101 or .-.-? is there a delimiter? etc) |
Steve Pampling (1551) 8172 posts |
Can we assume you also found the Morse Code over IP site as well? On which the Arduino link points at this on github. |
Colin Ferris (399) 1818 posts |
CWCom protocol CWCom uses a simple but very effective method of transmitting Morse code over the internet. The timing of the elements of each character is encoded as a sequence of numbers and sent in its own packet over the network. A positive number represents the length of a mark (key down, or closed circuit) in milliseconds, and a negative number represents a space (key up, or open circuit). For example, the packet for a V would look something like (-2000, +50, -50, +50, -50, +50, -50, +150) dit dit dit dah where each +50 represents a dot 50 ms in length, the +150 is the 150 ms dash, each -50 stands for an inter element space, and the -2000 means the V starts 2 seconds after the end of the previous character. As another example, here’s the word TEST sent on a bug at about 25 wpm. Notice how each letter is sent in a separate packet, for a total of four packets. (-347, +145) As you might expect, the actual CWCom protocol is a bit more complicated than this. For the purposes of the present discussion, however, that’s all there is to it. [edit] |
Colin Ferris (399) 1818 posts |
Is there a Stronghlp file for the ‘EasySocket’ module? Is there a way of finding out what is at the Server end? What do Servers usually send out – text? |
Colin (478) 2433 posts |
It’s dependent on the protocol used. There must be a specification for the protocol somewhere. |
Rick Murray (539) 13850 posts |
https://github.com/8cH9azbsFifZ/moip/blob/master/doc/cwcom.pdf?raw=true ? |
Colin (478) 2433 posts |
If this is the same thing it should contain the required info. Looks fairly portable too. |
Colin Ferris (399) 1818 posts |
Thanks Rick – I have already have that file. Have asked ‘MorseKOB’ – for more info. You log into the Morse Server. |
Steve Pampling (1551) 8172 posts |
and
I did point at that stuff yesterday, so I assumed Colin had already looked (and he has)
I presume they will be rather interested in an implementation for the globally known Raspberry Pi with a lightweight OS |
Rick Murray (539) 13850 posts |
;-) The thing that I find interesting is that there are clearly two mechanisms in play – one of the sites I found referred to the UDP method as being bandwidth heavy. Another mentions timings and groups of timings, and if that’s not enough, one made my browser (Firefox on Android) start beeping out the morse as it translated it (that was the Javascript implementation). None of these sites or references had anything that would cut it as technical documentation. Is the UDP method old hat? Is it JQuery or HTTP now? What port? What is to be sent, vs what is to be received? [example: HTTP has no ‘welcome’, you simply begin your request – is the morse like that?] It’s surely the worst spec’d “open” protocol I’ve seen in a while. Even the PDF linked above mentions UDP (as this was, I believe, the original method) but neglects to say UDP to where. The first post mentions morsecode.dyndns.org on port 7890 – is this a centralised resource? Or should one attempt to access port 7890 on a nominated private host? <scratches head> |
Steve Pampling (1551) 8172 posts |
Sounds almost as irritating as someone inserting beep sound generating characters into an email, but no one would do that would they? :) |
Colin Ferris (399) 1818 posts |
Two systems in use. http://mtc-kob.dyndns.org/ Port 7890 for working? When these are called – they show who is on line. |