谁能看懂这个QBASIC程序

fuzimango 2013-01-26 12:01:44
谁能看懂这个程序,可以给谢个详细的注释,然后用文本格式发给我吗,谢谢各种大神啦,要详细一点的。
我的邮箱是:475366898@qq.com


本程序为BASIC源程序,使用者可借助BASIC编译器(如随盘QBASIC。EXE)编译运行。
10 CLS:  Dim D(200): k = 0: m = 199                //定义数组D用于存放一次采集的数据
20 Open "com1:9600,n,8,1,cs0,ds0,cd0 " For Random As #1 //1#串行口(RS232C)初始化:波特率9600。
30 Print #1, "%15;0 199 0": GoSub 2000 //设置Y=ax+b中的a,b值:a=1,b=0;
40 Print #1, "%14;0 199 0": GoSub 2000 //
50 Print #1, "%4;0 " + Str$(m): GoSub 2000 //设首末通道号:首通道为0,末通道号值为m
60 Print #1, "%8;0 199 1": GoSub 2000 //设采集功能号:设0-199通道功能为应变采集
70 Print #1, "%17": GoSub 2000 //发初始平衡指令
80 For i = 0 To 9: LOCATE 1, (7 * (i + 1) + 3): Print Str$(i);: Next
90 For i = 0 To Int((m - 9) / 10): LOCATE i + 2, 2: Print Str$(i): LOCATE i + 2, 8
100 For j = 0 To 9: Print #1, "&17;" + Str$(10 * i + j): Input #1, S$ //取某一通道初始平衡值
110 D(10 * i + j) = Val(Right$(S$, 6)): GoSub 2000: D$ = Str$(D(10 * i + j))
120 If j < 9 Then
Print Left$(D$, 1) + Right$("0000" + Right$(D$, Len(D$) - 1), 5) + " ";
Else
Print Left$(D$, 1) + Right$("0000" + Right$(D$, Len(D$) - 1), 5) + " "
End If: Next j: Next i
130 LOCATE 23, 5: Print " Press <ENTER> key to begin logging or <ESC> to repeat initial balance!"
140 S$ = INKEY$
If S$ = Chr$(27) Then GoTo 70
If S$ = Chr$(13) Then GoTo 150
GoTo 140
150 CLS: For i = 0 To 9: LOCATE 1, (7 * (i + 1) + 3): Print Str$(i);: Next: Print
//进入加载测试程序循环体
160 Print #1, "%20": GoSub 2000 //发”放大器校零”指令
170 Print #1, "%26" //发”取回所有采集数据(减掉初始值的)”指令
180 For i = 0 To Int((m - 9) / 10): LOCATE i + 2, 2: Print Str$(i): LOCATE i + 2, 8
190 For j = 0 To 9: Input #1, D(10 * i + j): D$ = Str$(D(10 * i + j))
200 If j < 9 Then
Print Left$(D$, 1) + Right$("0000" + Right$(D$, Len(D$) - 1), 5) + " ";
Else
Print Left$(D$, 1) + Right$("0000" + Right$(D$, Len(D$) - 1), 5) + " "
End If: Next j: Next i: GoSub 2000
210 LOCATE 23, 10: Print Str$(k + 1) + " LOGGING" + " PRESS <ENTER> KEY TO CONTINUE!"
220 If INKEY$ = "" Then GoTo 220
230 k = k + 1: GoTo 160
//循环体结束
2000 Input #1, S$
2010 If S$ <> "ST00" And S$ <> "ST04" Then Print S$: Stop
2020 Return

QBASIC 软件使用说明:
1 请妥善保管好源盘,使用前请做好备份!!!
2 使用方法:执行该目录下的7v14c。bat,或运行qbasic 7v14C200。bas即可将程序调入内存。此时可根据计算机的实际配置及采集需要修改参数,然后按组合键<Shift>+<F5>运行,按屏幕提示操作即可,若通讯正常,可观察到7v14C主机绿灯熄灭,并发出采集的”嗒嗒…”声,若程序很快退回,请再按组合键<Shift>+<F5>,即可正常运行。若7V14C主机无任何动作,亦无数据传回,按组合键<Ctrl>+<Break>退回,检查电缆连接和通讯参数设置是否正确,串行口是否可正常工作…
3 采集结束后,按组合键<Ctrl>+<Break>退回,并按组合键<Alt>+<X> 退出。
...全文
441 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-01-27
  • 打赏
  • 举报
回复
垃圾代码,不屑于看,如果你有什么不会的,在关键字上按F1自己看就好了。QBasic本身有一个详细的在线帮助。
捧剑者 2013-01-27
  • 打赏
  • 举报
回复
不用定义。。。
worldy 2013-01-26
  • 打赏
  • 举报
回复
早期的basic 如果你懂得VB,照道理你能看懂,VB保留了早期basic的大部分特性 每行前面的数字是行号,早期的VB必须,在VB中,你仍然可以这样用,只是已经不再是必须的 Private Sub Form_Load() 10 Me.ScaleHeight = 1000 20 Me.ScaleWidth = 1000 End Sub :用于在一行中写多个语句,在VB中,仍然有很多人这样用 Open "com1:9600,n,8,1,cs0,ds0,cd0 " For Random As #1 open打开文件,事实上,串口等效于一个文件,在VB中也可以这样使用,只是大家习惯使用mscomm控件 locate是字符环境下,定位输出位置,行列定位print输出位置 gosub调用子程序,只是那时候的basic代码不是组织为一个函数或者过程,而是一行行组成,gosub 行号 调用,然后遇到return则返回 你将代码的行号全部去掉,将gosub的行号开始到return组成一个函数,给个函数名,gosub换成call 函数名 这样,估计你就能看懂了
  • 打赏
  • 举报
回复
引用 4 楼 fuzimango 的回复:
QBASIC 我能看懂些,VB串口调试也看了一些。 VB中写成Open "com1:9600,n,8,1,cs0,ds0,cd0 " For Random As #1 也能实现通信?
学习了……
fuzimango 2013-01-26
  • 打赏
  • 举报
回复
引用 7 楼 Chen8013 的回复:
引用 2 楼 fuzimango 的回复: ………… S$是字符串呢,VB里面不要定义的吗?上面那段程序好像没有初定义的吧,还有VB里面有 LOCATE 函数吗,按您的方法修改,可以运行吗?我用得是VB6.0可以吗? 印象中BASIC中所用的变量都不用事先定义的吧。 LOCATE 应该是‘光标定位’函数吧? 在VB中,窗体和PictureBox用 .CurrentX、.CurrentY……
要定义的吧,第一行 Dim D(200): k = 0: m = 199 是定义啊, 我是想请教在VB中字符串变量要不要定义的。。
fuzimango 2013-01-26
  • 打赏
  • 举报
回复
引用 6 楼 bcrun 的回复:
不知道还有“win7 64位的QBASIC”呢
可以百到的。。
舉杯邀明月 2013-01-26
  • 打赏
  • 举报
回复
引用 2 楼 fuzimango 的回复:
………… S$是字符串呢,VB里面不要定义的吗?上面那段程序好像没有初定义的吧,还有VB里面有 LOCATE 函数吗,按您的方法修改,可以运行吗?我用得是VB6.0可以吗?
印象中BASIC中所用的变量都不用事先定义的吧。 LOCATE 应该是‘光标定位’函数吧? 在VB中,窗体和PictureBox用 .CurrentX、.CurrentY属性 来实现‘光标定位’。
bcrun 2013-01-26
  • 打赏
  • 举报
回复
不知道还有“win7 64位的QBASIC”呢
fuzimango 2013-01-26
  • 打赏
  • 举报
回复
QBASIC 我能看懂些,VB串口调试也看了一些。 VB中写成Open "com1:9600,n,8,1,cs0,ds0,cd0 " For Random As #1 也能实现通信?
fuzimango 2013-01-26
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
早期的basic
如果你懂得VB,照道理你能看懂,VB保留了早期basic的大部分特性
每行前面的数字是行号,早期的VB必须,在VB中,你仍然可以这样用,只是已经不再是必须的
Private Sub Form_Load()
10 Me.ScaleHeight = 1000
20 Me.ScaleWidth = 1000

End Sub

:用于在一行中写多个语句,在VB中,仍然……


我下了个win7 64位的QBASIC ,运行时出现
大神能给解释一下吗?
fuzimango 2013-01-26
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
早期的basic 如果你懂得VB,照道理你能看懂,VB保留了早期basic的大部分特性 每行前面的数字是行号,早期的VB必须,在VB中,你仍然可以这样用,只是已经不再是必须的 Private Sub Form_Load() 10 Me.ScaleHeight = 1000 20 Me.ScaleWidth = 1000 End Sub :用于在一行中写多个语句,在VB中,仍然……
多谢大神,S$是字符串呢,VB里面不要定义的吗?上面那段程序好像没有初定义的吧,还有VB里面有 LOCATE 函数吗,按您的方法修改,可以运行吗?我用得是VB6.0可以吗?
看实例学VB 6.0 VB语言的语法和QBASIC基本一致,可以说如果你能读懂QBASIC程序,那你读VB的程序是没有问题的,这一节中我们只是简单的讲一讲VB的语法,因为在今后的各个实例中我们会不断接触到新的语法知识,这也是一个积累的过程。   如果你还记得上节中的内容,我们提到过如果在“窗体设计区域”的某个组件(控件)上双击鼠标,会出现“代码编辑窗口”,也就是如下图的窗口,我们可以在其中输入或是修改程序的代码。在我们双击控件到写入代码的这个过程中,我们涉及到了一个很重要的概念,这是VB与QBASIC的主要差别之一,大家知道在QBASIC包括Tubro C,TubroPascal等语言中程序从一开始就需要我们一点点的写代码来实现所有的功能,比如程序运行的界面,输入输出,键盘控制等,它们在程序中体现为一个个的过程或者是函数及子程序,它们都是完全面向过程的编程语言;但是现在的VB、VC、DELPHI等编程语言,都提供了可视化的编程环境,备有一整套常见的组件(控件)供我们使用,这些控件可以看作是对象(VB严格的说不是完全面向对象的编程语言),我们写程序时会直接与这些对象打交道,而不象原来。所以在VB中大部分的代码是与这些相关的,例如下图所示的一段代码,它是我们在一个按钮(Command)上双击鼠标而由VB自动产生的一个子过程,Private Sub Command1_Click()是子过程的开始,End Sub表示子过程的结束。然后我们可以在子过程中添加程序代码,也就是由我们自己来写当按钮被点击时,程序所做出的响应。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧