通过使用visbasic或q basic来使用bas来“修改”一个exe

时间:2013-08-01 21:59:33

标签: exe basic qbasic

所有!

我正在尝试运行控制步进电机的程序。我已经到位的PC和软件以及步进电机控制器已经相当陈旧了,我几乎所有我在这里做的事情都是新手 - 我学习的东西很多。我在Matlab中编写了一些代码,所以我有一个非常基本的编码逻辑,但基本上不知道任何常见的语法。所以,我知道一些关于步进器和步进控制器的信息,但其他的并不多!

我有一个名为“Hoop.exe”的程序,我正在尝试修改以降低其中一个步进器的速度(我只需要将300更改为200!)当我运行程序时。软盘上还有一个关联的(假设的)hoop.bas和一个hoop.txt文件。从查看txt文件看,它看起来像我见过的基本示例中的基本代码。我在Windows 98上使用visual basic 2.0和qbasic 1.1。

所以,我尝试先用qbasic和vb打开hoop.bas文件。使用qb,我收到“错误的文件模式”消息。使用vb,我得到'无效的文件格式',似乎它要我打开一个mak文件,但我没有'hoop.mak'。我这样认为我可以用vb或qb打开bas文件,然后编辑它,然后将其保存为exe,然后运行它。

我找到了一个pdf,展示了如何将qb文件合并到vb的命令按钮中,我试过了。但是,我在第一行收到了“预期:声明结束”错误!当我试图将它保存为exe时。

所以,我真正想做的就是改变我的hoop.exe。我会假设因为qb和vb都在PC上,其中一个写了bas(也许不是!),所以我想知道为什么他们都不能读它。

我从来没有使用过vb或qb,但如果我必须深入了解细节,似乎我宁愿使用qbasic,因为我之前从未使用过图形界面进行编码。但是,为了做我想做的事情,要么是其中之一? (当我说完所有时,我将需要编写一些程序来控制这些步进器,但我认为我应该一步一步。)

我尝试了某种形式的复制和粘贴到qb中,但我无法立即弄清楚如何做到这一点。 (可能是因为我不知道如何使用qb。)

那么,修改我的箍计划最有效的方法是什么?

如果答案是我只需要用qb学习基础知识,那很好,但是我希望得到某些人的知情,这些人在我付出那么大的努力之前就知道他们在谈论什么。< / p>

我真的很感激任何指针因为我自己显然完全无能为力!

2013年8月10日

为了防止它有用,以下是我打开的Hoop.txt中的一些行:

10 CLS:CLEAR 1000:P = 512

20 LOCATE ,, 1

100 A%= INKEY $:打印A $;

105如果A $ =“*”那么GOTO 700

110 GOSUB 510:GOSUB 610:GOTO 100

500 REM

510如果A $ =“”那么返回

等。这是接口代码的开始,允许我与电机控制器通信

2 个答案:

答案 0 :(得分:1)

您是否考虑过Arduino或其他一些低成本且友好的电子产品开发平台?我想这将是你控制步进电机的方法...... 看一看:

http://arduino.cc/en/Tutorial/StepperUnipolar

如果你在谷歌周围发现你会发现很多你管视频炫耀一些arduino控制的东西。

修改你当前的.exe似乎是一个太长而艰难的道路,而不是制作你自己的正确的源代码来实现你想要的东西,因为你需要反汇编可执行文件并字面上“知道你是什么” “使用所有汇编语言来查找使用正确值修补二进制文件的位置。

无论如何,如果您发布旧硬件的图片或原理图,我可以尝试帮助您一点,但我想这将更适合这个其他堆栈交换站点: http://electronics.stackexchange.com

答案 1 :(得分:1)

QuickBASIC和Visual Basic非常不同,尽管它们的名字是“BASIC”,尽管它们都是由微软制造的。首先,您需要确定.BAS文件是QuickBASIC还是Visual Basic。一种简单快捷的方法(尽管不是最准确的)是在记事本或其他文本编辑器中打开文件。如果“OPEN”或“LEN”或“MID”或“CLOSE”等关键字为大写,则其更可能是QuickBASIC文件。如果关键字看起来更像“打开”或“关闭”或“Len”或“Mid”,那么它更可能是Visual Basic文件。

现在请记住,已经开发了其他版本的BASIC,例如Turbo BASIC(Borland版本)或GW-BASIC或BasicA或PowerBASIC甚至Color Basic。

现在如果你不能用这种方式解决这个问题,我建议的下一件事就是下载一个十六进制编辑器,比如XVI32(虽然还有很多其他的免费编辑器)。查看文件(特别是在文件的末尾),通常有迹象表明使用了哪种编译器。您可能会看到“Microsoft Basic Compiler”或“Borland Turbo Compiler”。通常在文件末尾,编译器或链接器会输入字符串“stubs”,您可以使用它来确定编译器。

如果所有这些都失败并且您绝望并且程序中的“300”号码是硬编码的并且您需要更改它,那么还有另一种方法可以做到这一点。首先备份原始的exe文件。然后使用XVI32或其他十六进制编辑器并搜索字符串“2c01”(300是012c十六进制,你需要反转01和2c,因为Intel机器是little-endian)。找到2c01的实例后,将其更改为“c800”(200为00c8。Little Endian版本为c800)。保存文件,然后重新运行。这是一种可怕的试错方法来解决这个问题。如果它从300改为200,那么一切都很好!如果没有,请从备份中恢复,然后重试!