I don't know much about Hyperterminal, how would I find out if I have access to an ASCII character table?
Main Topics
Browse All TopicsI'm trying to figure out how to communicate with the CM11A X-10 device through something like Hyperterminal. I tried to follow the protocal (http://www.smarthome.com/
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
Ah! - Take a look at http://www.bbdsoft.com/asc
The ASCII code table will show you the 8 bit binary values (0 through 255) and the associated characters - only some are actually shown on the keyboard! The remainder will have to be entered using control sequences or ALT-Numkeys.
You will have noted that your comms port has to be set to No Parity - that is because otherwise you will only be able to send 128 different codes using 7 bits - the 8th bit is the parity bit which will be generated automatically - no good at all in this case.
So how were you going to send your binary codes over the serial port using Hyperterminal?
Note that the codes specified in the instructions for the CM11 are binary and you will be sending these binary values over the serial interface in groups of 8 bits (== 1 byte).
You therefore have to work out what character you have to type on the keyboard to generate the appropriate 8 binary bits to send to the CM11.
It might sound complicated if you haven't had to worry about binary bits before - Windows hides all this from users - but if you Google for "serial communications" and read up about it you should soon understand what is needed.
What exactly are you trying to accomplish with that?
You can get the x10 SDK and "bypass" all those "low level" affairs.
This thread:
http://www.x10.com/news/ms
gives some indication on how to use the SDK dll in a vb.net project, and has a "sample program" in there.
Try this one, it's in french, but the guy states the same: that he couldn't find a vb example for cm11, so he built one.
He talks about a freeware active X component, I don't know if he's using it or not.
See if it helps.
http://www.vbfrance.com/co
By house:code I mean header:code. Its a special byte that I have to send out first, and I dont understand how to complie it. I thought I understood it, the 7-0 represents the binary places, so it said the first few were the dim code (22 = 100) so I converted 22 to binary and got 10110, a 5 bit code as expected, then it says bit 2 should always be a 1, so that gives me 101101, then it says 0 for address and 0 for transmision, giving me 10110100, but when I convert this to hex and enter the ASCII code, it doesn't seem to work. Also, I can never get any response from the device as far as a checksum. However, if I send out an X-10 code say from my RF remote, I will see the interfaces' polling data 0xc3 (wich is ASCII for Z, and I see Z every second in hyperterminal).
The "Header:Code" is 2 bytes = 16 bits
Your first byte is "10110100" that you describe above
Then you need the second byte which is the 4 bit housecode + 4 bit device code.
So you end up with 2 characters to be transmitted before you would get the checksum
Then you send a 1 byte Acknowledge to which you receive 1 byte "ready" (0X55) back
Still not fully understandng it. So I start off with the 10110100 converted to hex is 0xB4, then I send the housecode + the device code, for example A1 would be 01100110 and in hex 0x66. Then I should recieve a checksum, to which I reply with 0x00, and I'll get a reply of 0x55. Is that correct? I know you can't enter hex into Hyperterminal, but I have another program that accepts hex codes and sends them to the com port, but when I entered what I just typed, I didn't get anything.
Also, is this considered low level programming? I was considerng taking a low level programming course in the next couple of semesters, would I learn how to do this type of stuff there?
Low level programming is the art of making up instructions to the CPU in the same way you are making up these instructions to the CM11 so there are similarities.
Tricky if you had to encode each instruction in binary bits so an "Assembly" language is used where you use mnemonics to indicate the instructions: eg "LDA 0x25" to load byte register A with hex value 25 and an "assembler" (a low level compiler) then converts the "code" you have written into the binary strings that will be ´read´and executed by the CPU.
Anyway Carlos makes a good point that I forgot to mention - any controller receiving instructions is likely to have a timeout so that it can recover from broken data streams and this timeout is likely to be based on the expected receive rate - hence you should try to send both bytes 'together' - with no delay.
You do have your serial port configured for No Parity as well as the speed defined in the spec? You have said that you can receive and display codes from the CM11 - this would be true even if the parity setting was incorrect although there would be a good chance that the character you saw was not really the character that was transmitted. However - when you are sending data the CM11 will check and presumably ignore bytes that do not make sense - and the parity setting will likely corrupt bit 2^7 of each byte unless it is disabled.
The problem with "text" files, is that some special codes are interpreted as "end-of-file", and other stuff.
You could try that "send text file" as long as the text file contains the codes and they don't conflict with those "special codes".
You'd have to create a text file with the right ascii codes - but even then I'm not sure if hyperterminal wouldn't also send more than we can see (as carriage returns/new lines/ end-of-file/etc bytes)
I'm registered there, so I downloaded it and placed it at http://www.oxiz.net/temp/v
That might help a little. :)
Ok, I downloaded the vb program. I never coded with VB before so I don't understand all of it, but I think I've found the place where I change what commands are being sent out. One thing I've noticed, however, is the transmission function requires a command (like on or off), so I was trying to figure out if there is just a way to transmit the house and unit code without a function code, because I want to do SmartHome scene programming, so I need to be able to send out several house and device codes WITHOUT functions.
Ok, I understand enough of the VB program to manipulate it to do different addresses, but I still can't figure out how to make it send out a house and device code without a command. For example, right now I have it set up to send out A3 ON, but I want to just be able to send out A3. Does anyone know how to do this? I tried putting in NULL for the command, but the function wants to convert everything into a byte, so that made a compile error. I also tried putting in 0, but I then found out that 0 is the byte for ALL UNITS OFF.
Business Accounts
Answer for Membership
by: nomorefuzzylogicPosted on 2005-12-08 at 07:58:32ID: 15445448
I haven't tried yet to communicate using Hyperterminal because this could work out tricky as the codes must be transmitted in Binary - are you using Alt+number keys to generate your bytes?
Not only that but my PC is plugged in to the CM (hope the neighbours don't start playing around).
Any responses received may not be mapped to printable characters.
Do you have access to an ASCII character table?