'modifying' an exe by working with bas using visbasic or q basic
一切!
我正在运行控制步进电机的程序。我已经安装好的个人电脑、软件和步进电机控制器已经很旧了,我对我在这里所做的每一件事都很陌生,就像我在学习一样。我已经在matlab中"编码"了一点,所以我有一个非常基本的编码逻辑,但基本上不知道任何常见的语法。所以,我知道一些关于步进电机和步进电机控制器的知识,但其他的就不多了!
我有一个叫做"Hoop.exe"的程序,我正试图修改它来降低其中一个步进器的速度(我只需要把300改为200!)当我运行程序时。软盘上还有一个关联的(假定的)hoop.bas和一个hoop.txt文件。从TXT文件来看,它看起来像是我见过的BASIC示例中的基本代码。我正在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的命令按钮中,我尝试了这个方法。但是,在第一行中有一个"expected:end-of-statement"错误!当我试图将其保存为exe时。
所以,我真正想做的就是改变我的hoop.exe。我假设QB和VB都在PC上,其中一个写了BAS(也许不是!)所以我想知道为什么他们都不能读。
我从来没有用过vb或qb,但如果我必须深入了解细节,我似乎更愿意使用qbasic,因为我以前从未使用过图形界面来编码。但是,为了做我想做的事,是否有必要这样做?(我需要写一些程序来控制这些步进器,当所有的事情都说了又做了,但我认为我应该一步一步来完成。)
我尝试了某种形式的复制和粘贴到QB中,但我不能马上找到如何做到这一点。(可能是因为我不知道如何使用QB。)
那么,修改我的Hoop程序最有效的方法是什么?
如果答案是我只需要学习基本的QB,那很好,但是在我投入那么多精力之前,我想从那些知道他们在说什么的人那里得到一些暗示。
我真的很感激你给我指点,因为我显然自己一点都不知道!
8/10/2013:
为了以防万一,下面是我打开的hoop.txt中的一些行:
10 CLS:清除1000:P=512
20位,1位
100 A%=inkey$:打印A$;
105如果A$="*",则转到700
110 GoSub 510:GoSub 610:GoTo 100
500雷姆
510如果A$="则返回
等。这是接口代码的开始,允许我与电机控制器通话。
QuickBasic和VisualBasic是非常不同的,尽管它们的通用名称是"basic",尽管它们都是由微软制造的。首先,您需要确定.bas文件是quickbasic还是visual basic。一个简单而快速的方法(虽然不是最精确的)是在记事本或其他文本编辑器中打开文件。如果"open"或"len"或"mid"或"close"等关键字是大写的,那么它更可能是一个quickbasic文件。如果关键字看起来更像"open"、"close"、"len"或"mid",那么它更可能是一个VisualBasic文件。
现在请记住,已经开发了其他版本的Basic,例如Turbo Basic(Borland的版本)或GW-Basic或Basica或PowerBasic甚至Color Basic。
现在,如果你不能这样理解,我建议你下载一个十六进制编辑器,比如x732(尽管有很多其他的免费编辑器)。查看文件(尤其是文件的末尾),通常会有一些符号指示使用了哪种编译器。您可能会看到"Microsoft基本编译器"或"Borland Turbo编译器"这两个词。通常在文件的末尾,编译器或链接器放入的字符串"stub"可以用来确定编译器。
如果所有这些都失败了,你绝望了,程序中硬编码了"300"号,你需要更改它,那么还有另一种方法可以做到这一点。首先备份原始的exe文件。然后使用xvis2或其他十六进制编辑器搜索字符串"2c01"(300是012c十六进制,因为Intel机器是小endian,所以需要反转01和2c)。找到2c01的实例后,将其更改为"c800"(200是00c8)。小endian版本是c800)。保存文件,然后重新运行。这是一个可怕的尝试和错误的方法来解决这个。如果从300改为200,那么一切都很好!如果没有,请从备份中还原并重试!
您是否考虑过获得Arduino或其他低成本、友好的电子开发平台?我想这是你控制步进电机的方法…看一看:
http://arduino.cc/en/tutorial/stepreunipolar
如果你在谷歌周围搜索,你会发现很多你的电子管视频显示一些Arduino控制的东西。
在我看来,修改当前的.exe似乎是一条很长很难遵循的路径,而不是为实现您想要的目标而生成自己的正确的源代码,因为您需要分解可执行文件,并使用所有的汇编语言逐字"知道您在做什么",以找到在哪里用正确的值修补二进制文件。
不管怎样,如果您发布一张旧硬件的图片或示意图,我可以尝试帮助您更多,但我想这将更适合这个其他堆栈交换站点:http://electronics.stackexchange.com