I can see the data, but I can't use it! How is this possible!? Need help.

Hi guys,
I could really use your help, this is something that’s been haunting me for a while and I can’t figure it out. I’ve been really racking my brains… I know it is possible, if I could just figure out how to connect the dots.

So I have this device (a torque meter) that connects to a computer via USB and is defined as a COM under “Ports” in the device manager. There is a software to that device. Here is a screenshot of the main screen of that software:

The value under “Load” changes based on the amount of torque on the device and I can see that value on the main software screen that you see in the screenshot. My project is as such: I want my Arduino Uno to shut off a motor once the load is above “17”.

But I can’t find how I read the data that the device produces and in turn use it in the arduino IDE. I’ve looked at the installation folder of the device’s software and manual-- nothing!. It seems the data goes directly to the software, it doesn’t seem to create a temporary file or anything… or if it exists I can’t find it.

Any ideas how to approach it?

Hi, The software is designed to purely monitor and log your torque values, it has no digital output or alarm facility. The software developer would be of more help than this forum, they may have software to do the processing you require.

We give help and info on Arduino projects. In this case, however, how to glean info from other software that is not on the Arduino platform is out of our scope.

Tom... :)

That software is "closed". You would need documentation about the API, but since they sell the more expensive version of that software, I seriously doubt they are going to divulge the proprietary information to you.

That software is "closed". You would need documentation about the API, but since they sell the more expensive version of that software, I seriously doubt they are going to divulge the proprietary information to you.

I have the MESURgauge software which is the more expensive version of the software, I'm not a peasant ;) So, what you're saying is that the answer is with them.

Hi, The software is designed to purely monitor and log your torque values, it has no digital output or alarm facility. The software developer would be of more help than this forum, they may have software to do the processing you require.

We give help and info on Arduino projects. In this case, however, how to glean info from other software that is not on the Arduino platform is out of our scope.

Tom... :)

Well I've emailed the developers to no avail. I was just hoping there was a way I could convert the data from the COM Port to the arduino. It's true that it's not specifically arduino-related, but arduino is a part of my project and you guys are geniuses ;)

Valeriya: So, what you're saying is that the answer is with them.

Where else would it be?

Valeriya: I was just hoping there was a way I could convert the data from the COM Port to the arduino.

"convert" the data?

You don't even know what the data is.

If the manufacturer won't reveal the data transfer protocol, you or someone else will need to reverse engineer it.

You can use various devices to "sniff" the COM port and see what comes over it. It might be a simple text stream that makes sense.

Where else would it be?

convert" the data?

You don't even know what the data is.

True, I don't know what the data is; but does it mean I should give up?

Think about it, the device outputs data that the computer can read through a COM port. It means communication exists. Theoretically, reverse engineering is possible if I could decipher the data once I get it. It could be anything; it could be that the data is numbers, heximals, zeros and ones. I'm not a software expert, hence I come asking ye almighty know-it-alls for help. But, your attitude seems pessimistic and frankly feels a little uneducated; no offense. It's true that the easy answer might lie with the developers of the interface but if data packets exists then reverse engineering exists as well. Nevertheless, perhaps you can advise me to find a different solution to the problem; which is ultimately what I'm asking, a solution. I'm not asking to solve it in one specific way.

If the manufacturer won't reveal the data transfer protocol, you or someone else will need to reverse engineer it.

You can use various devices to "sniff" the COM port and see what comes over it. It might be a simple text stream that makes sense.

YES! That's exactly what I meant; disproving ieee's negative attitude :-) But I have no idea how to approach it, such as which softwares should I use.

Valeriya: Nevertheless, perhaps you can advise me to find a different solution to the problem; which is ultimately what I'm asking, a solution. I'm not asking to solve it in one specific way.

You obviously don't understand that solving a problem gives you the solution. So when you want a solution, you want it solved. Not going to happen.

Valeriya: But, your attitude seems pessimistic and frankly feels a little uneducated

You are calling me "uneducated". You have got a lot of nerve.

As for pessimistic, yes, I am pessimistic, I don't think you have the ability to do this job without help from the manufacturer.

@Valeriya, this is not an Arduino problem - I have no idea why you decided to ask for help here. You should be asking for help on some Forum that helps with PC programming problems.

From what I can see you have a device that connects to the USB connection on your PC and appears to the PC software as a serial port.

If you want to see what data the device is transmitting try writing a Python program that listens for bytes arriving on the serial port and prints them on the PC screen. (If you don't like Python then use any other PC programming language).

However, if the manufacturers have made any effort to protect their intellectual property the device probably won't do anything unless it gets suitable data from the PC and you don't know what that is.

...R

Find a data com monitor with recording capability. Put it in the data comm line and set it up to monitor. Then you can review the data stream at you leisure. That is what I did years ago to reverse engineer various protocols to develop a communications front-end processor for mini-computers.

I still have my monitor, but the tape cartridge mechanism died years ago due to the rubber wheels breaking up. Other monitors have other storage schemes. I have a similar monitor at the plant, with no storage, just for cases that needed to view the communications.

Paul

This sounds like a fairly easy reverse engineering job, assuming they haven't gone out of their way to make things difficult.

Open up serial monitor (or better yet, a real serial console - I use hTerm). Are you receiving anything? If so, try changing the baud rate on the terminal program until you see something that looks like it might be data. I would probably use this with the hex and ascii representations enabled so I'd have a prayer of seeing the data even if they're sending it as bytes not ascii characters.

If fooling around with serial monitor doesn't show it outputting anything, it stands to reason that some magic incantation needs to be sent down the line to the sensor. So get two serial adapters, and connect TX of one to RX of the other. Open one of them in terminal, and point the sensor software at the other one. Again, you'll need to try different baud rates until you find the right one, but at some baud rate, you'll see the data it sends to start data collection, and now you can send that to it.

If you have to, and the drivers are for a generic serial adapter (eg, FT232, CP2102, CH340G...), you can at least figure out the baud rate for sure by opening it up, finding the data lines (from the pinout diagram for the serial adapter chip) and looking at it with a scope - the duration of each bit tells you the baud rate. (in this case, you could ultimately take the computer out of the cycle entirely by soldering a flying lead onto the appropriate pin and connecting that to the arduino directly)

You obviously don't understand that solving a problem gives you the solution. So when you want a solution, you want it solved. Not going to happen.

I have no idea what you just said. Can you stop posting here please? You're not contributing.

You are calling me "uneducated". You have got a lot of nerve.

No, I didn't. I don't know you. I was calling your answer "uneducated", which is was. Take an example from the rest of the people posting here.

As for pessimistic, yes, I am pessimistic, I don't think you have the ability to do this job without help from the manufacturer.

I have nothing to gain by proving to you that I can. Why make it personal? I'm not here for that. Please move along.

@Valeriya, this is not an Arduino problem - I have no idea why you decided to ask for help here. You should be asking for help on some Forum that helps with PC programming problems.

True, it's just that I figured smart people dwell here in general :)

If you want to see what data the device is transmitting try writing a Python program that listens for bytes arriving on the serial port and prints them on the PC screen. (If you don't like Python then use any other PC programming language).

However, if the manufacturers have made any effort to protect their intellectual property the device probably won't do anything unless it gets suitable data from the PC and you don't know what that is.

Yes, I know Python... very interesting solution. I might try that. Thanks :)

Find a data com monitor with recording capability. Put it in the data comm line and set it up to monitor. Then you can review the data stream at you leisure. That is what I did years ago to reverse engineer various protocols to develop a communications front-end processor for mini-computers.

I still have my monitor, but the tape cartridge mechanism died years ago due to the rubber wheels breaking up. Other monitors have other storage schemes. I have a similar monitor at the plant, with no storage, just for cases that needed to view the communications.

Thanks Paul, this seems a bit more complex than the other suggestion but I'll take it into consideration.

This sounds like a fairly easy reverse engineering job, assuming they haven't gone out of their way to make things difficult.

Open up serial monitor (or better yet, a real serial console - I use hTerm). Are you receiving anything? If so, try changing the baud rate on the terminal program until you see something that looks like it might be data. I would probably use this with the hex and ascii representations enabled so I'd have a prayer of seeing the data even if they're sending it as bytes not ascii characters.

If fooling around with serial monitor doesn't show it outputting anything, it stands to reason that some magic incantation needs to be sent down the line to the sensor. So get two serial adapters, and connect TX of one to RX of the other. Open one of them in terminal, and point the sensor software at the other one. Again, you'll need to try different baud rates until you find the right one, but at some baud rate, you'll see the data it sends to start data collection, and now you can send that to it.

If you have to, and the drivers are for a generic serial adapter (eg, FT232, CP2102, CH340G...), you can at least figure out the baud rate for sure by opening it up, finding the data lines (from the pinout diagram for the serial adapter chip) and looking at it with a scope - the duration of each bit tells you the baud rate. (in this case, you could ultimately take the computer out of the cycle entirely by soldering a flying lead onto the appropriate pin and connecting that to the arduino directly)

Great answer :) I would've tried that but yesterday I figured a much easier solution to the problem which is replacing the DC motor with a rotary transducer and reading the torque value directly from that (with an Arduino setup). Of course it's a slightly more expensive solution but I figured I need a new motor anyway.

Thanks a lot everyone!

Be careful about reverse engineering someone else's code/hardware/etc, especially if its a commercial product. I would be amazed if there wasn't a clause somewhere in the software license agreement saying that reverse engineering of any aspect of the system is prohibited. Also, from another point of view, how would you feel if someone was reverse engineering something you sell?