0

Background

Since some time we've been in the possession of a greenhouse. It was build around 1990 and had an automated system for climate control. However most of the installation has been removed when that greenhouse was sold, so there no longer is equipment for moisture control, heating, ... This causes the existing automated climate control system to no longer work.

Thing is though, since it's a greenhouse - it does get really hot in the summer. We use it for storing goods and vehicles, so a high temperature is not desired. We can manually open the roof, but the desire is there to have this automated.

There is a computer with software that is connected to the installation via a D-sub DC-37 plug. However since a lot of the equipment is no longer installed, the software does not operate as it should because it gets no signal from these removed components, and it's algorithm clearly does not like that.

What is still available in the greenhouse is indoor temperature measurement, outdoor temperature measurement, windspeed measurement and rain measurement. The engines to open and close the roof panels are still there and there is still a sunscreen that is operational.


Question

I would like to figure out in some way what signals / instructions the software sends over the DC-37 connector. This way, I can write my own program that opens the roof windows if the temperature is too high, and the wind speed is below the safety maximum speed.

The software is rather old software (from 1992) designed to run on DOS. It might be a BASIC program, since the floppy disk containing it also has a file BRUN30.exe, which according to a quick google search is needed by DOS to run compiled Basic programs.

None of the executables are (understandably) working on Windows 10. It also contains COM files.

The actual program executable the contains the algorithm I believe is the 'BL270690.EXE' file. It might also be that the 'SETUPIO.EXE'contains the code to send data / instructions over the DC-37 port. list of files of the program

What would be the best approach for me to determine what instructions I need to send to Read the wind speed, open the roof windows, ...

What possibilities are there to reverse engineer these old executables / COM files?

Thanks in advance, finding a solution would mean a lot to me!

1

You’re in for a wild ride but it can be achieved if you persist and in any case you will learn a lot.

I would probably start like this:

  1. Check what programs are run by autoexec.bat

  2. Run them in DOSBox and observe the output.

  3. Step through the code in DOSBox debugger (you may need to make your own build to enable it) and try to identify accesses to the serial port and what it expects to receive

  4. Either try to provide necessary input via the ports or patch the code so it works with what there is.

The problem is somewhat exacerbated by the presumed use of Basic. It means that most of the code executed would be the code of the interpreter and not the actual program. It might be worth figuring out how the interpreter works and trying to extract the original Basic code to understand the logic better. However that’s a whole another adventure in itself so might be left as a backup option if the other attempts fail.

This question may offer some hints for dealing with DOS Basic binaries: Reverse engineer an old DOS QBasic executable

| improve this answer | |
  • 1
    Managed to figure out that the devices communicate via the Hayes Command Set. I think I'll try connecting a newer pc to the serial port, monitoring what gets send when the software is running in virtual box. This seems the way to go – Bjorn De Rijcke May 31 at 6:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.