矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: pdshyh

请教HP3457A表的使用问题

[复制链接]
     
 楼主| 发表于 2019-1-15 16:17:36 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-15 16:22 编辑
washu 发表于 2019-1-4 12:46
1、3457A 和 “HP3457A_Contec_UITest” 是不同时期写的,3457A 是 09 年左右,HP3457A_Contec_UITest 是 ...


washu 老师好,这一段时间一直在捣鼓vb发现以下问题请教:
1.在3457A例程中窗体combobox插件换行符设置和其它的不一样,只看到
DatDelim.SelectedIndex = 1

Private Sub DatDelim_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DatDelim.SelectedIndexChanged
    End Sub
换行符怎么设置,怎么用还有点糊度
还有通过这段时间琢磨用3457A例程修改到其它表用软件,基本的修改名称费了一段时间,文件名可以修改,属性名称刚刚知道修改位置,文件夹名称不好改。
2.最绕弯路的是把3457A例程窗体换为HP3457A_Contec_UITest的win格式后出现不少问题,通过查找问题对软件也熟悉一些。 以下都是移植后出现问题:
1).时间计时器 Timer1需要增加公共说明 Private WithEvents Timer1 As Timer,增加这一行后,时间器事件最后一句.CheckedChanged 问题提示:找不到该事件。
Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Checkbox2.CheckedChanged

2). 下面第一行后一句.SelectedIndexChanged  问题提示:找不到该事件。和上面问题一样
Private Sub cb_Intime_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cb_Intime.SelectedIndexChanged   
        Select Case cb_Intime.SelectedIndex
            Case 0
                Workintime = "0.02"
            Case 1
                Workintime = "0.2"
            Case 2

                Workintime = "1"
            Case 3
                Workintime = "10"
            Case 4
                Workintime = "100"
        End Select
    End Sub
3).下面语句又多了一个Case0:问题:位于“Select Case” 与第一个“ Case”中间的语句和标签无效
    Private Sub cb_Meafunction_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cb_Meafunction.SelectedIndexChanged
        Select Case cb_Meafunction.SelectedIndex
Case0:      Meafunc = "VOLT: DC"
Case1:      Meafunc = "CURR: DC"
Case2:      Meafunc = "VOLT: AC"
Case3:      Meafunc = "CURR: AC"
Case4:      Meafunc = "RES"
Case5:      Meafunc = "FRES"
        End Select
    End Sub
自己琢磨解决的是两个窗体环境发送指令命令SendCommand和WriteCommand不能互换,还有 bt_Sendcmd.IsEnabled,在老窗口是 bt_Sendcmd.Enabled。总共24个错误5个警告8个消息。
完全根据3457A例程修改没有问题用了大半天时间完成,表指令熟悉看着中文说明书捣鼓好几天才熟悉。
把3457A例程窗体换为HP3457A_Contec_UITest的win格式后出现不少问题,也就没有修改完成。根据3457A例程修改刚刚完成还没有实测。


问题.png
回复 支持 反对

使用道具 举报

     
发表于 2019-1-15 17:37:36 | 显示全部楼层
pdshyh 发表于 2019-1-15 16:17
washu 老师好,这一段时间一直在捣鼓vb发现以下问题请教:
1.在3457A例程中窗体combobox插件换行符设 ...

换行符那个,我好像偷懒没写

下面的问题,你是直接把代码复制到新的工程里去的做法?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-15 18:32:44 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-15 19:19 编辑
washu 发表于 2019-1-15 17:37
换行符那个,我好像偷懒没写  

下面的问题,你是直接把代码复制到新的工程里去的做法?


奥,知道了我把他们可以删除吧,下面的是拷贝到HP3457A_Contec_UITest里面,窗体按照HP3457A的插件添加,关系都一一对应。有不少问题,比葫芦画葫芦 明天我也整理出来上传给您看看,
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-15 18:53:27 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-15 19:44 编辑
washu 发表于 2019-1-15 17:37
换行符那个,我好像偷懒没写  

下面的问题,你是直接把代码复制到新的工程里去的做法?


washu 老师好,按照 3457A例程修改,中刚刚试运行有一两处表指令小毛病修改了,就是没有生成.txt文件。您给看看问题在哪,还有里面的文件夹怎么修改 。刚刚试了测量功能选择不起作用,

AG34401.rar

542.84 KB, 下载次数: 192

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-16 08:33:21 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-16 08:51 编辑
washu 发表于 2019-1-15 17:37
换行符那个,我好像偷懒没写  

下面的问题,你是直接把代码复制到新的工程里去的做法?


O(∩_∩)O哈哈~不熟悉,可以生成.txt文件,在子文件夹中,找到了,测量功能选择不起作用问题也找到了,表量程不认原来的数字类型 。washu 老师能不能把Visual Studio使用调试常用方法步骤介绍一下,跨行太多比较迷茫

补充内容 (2019-1-16 11:23):
表量程尤其电流档直流最小10ma,交流电流最小1a3457A是直流最小30μa,交流电流最小30ma,指令有点复杂,一行一个指令,3457a最方便,多个指令可以分号隔开一条指令发出,方便。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-16 12:06:51 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-16 12:38 编辑
washu 发表于 2019-1-15 17:37
换行符那个,我好像偷懒没写  

下面的问题,你是直接把代码复制到新的工程里去的做法?


把3457A例程窗体换为HP3457A_Contec_UITest的win格式后,时间计时器 和找不到该事件两个主要问题,通过通讯发表命令没问题了和无关的都屏蔽了。
   表量程尤其电流档直流最小10ma,交流电流最小1a,3457A是直流最小30μa,交流电流最小30ma,指令有点复杂,一行一个指令,3457a比较方便,多个指令可以分号隔开一条指令发出,方便。

ag34401A.rar

430.41 KB, 下载次数: 196

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-16 14:30:18 | 显示全部楼层
通过 GPIB 口实现多台仪器和计算机通讯,应该发送指令接收数据需要对应通讯地址准确就行了,如果计算机同时与GPIB 口和串口通讯怎么弄?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-17 17:13:03 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-17 18:53 编辑

通过学习HP3457A和HP3457A_Contec_UITest这两个例程,开始弄一个简单的按钮程序到简单的在例程基础上修改并使用,准备pc- GPIB-表-电源+三极管简单的三极管参数测量。

AG34401.rar

519.04 KB, 下载次数: 191

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-20 11:53:34 | 显示全部楼层
用pc-GPIB 卡-另一型号台表进行测量设置测量和记录,
34401jb.png
回复 支持 反对

使用道具 举报

     
发表于 2019-1-21 16:31:39 | 显示全部楼层
本帖最后由 washu 于 2019-1-21 16:33 编辑
pdshyh 发表于 2019-1-16 14:30
通过 GPIB 口实现多台仪器和计算机通讯,应该发送指令接收数据需要对应通讯地址准确就行了,如果计算机同时 ...


引入一个串口控件(Winform)或串口类(WPF)即可,发给你两个例程。

这是一个 Winform 的,操作一个继电器复用器测量多路电压并同步记录来自串口的温度的程序,一个典型的 GPIB+串口的程序 使用的是串口控件。
VISA3488_SingleMeter.zip (430.55 KB, 下载次数: 193)


这是一个 System.IO.Ports.SerialPort 的荔枝,将串口类实例化为 SerialPort1,设置其 PortName(端口名)、BaudRate(波特率)...等参数后打开即可,用 WriteLine() 方法从串口输出一行文字,ReadLine() 方法读取外部设备发到该串口的一行文字。
Serial Port Test.zip (280.03 KB, 下载次数: 194)

AddHandler SerialPort1.DataReceived, AddressOf SerialPort1_DataReceived

AddHandler 语句是一个 VB 的写法,表示 SerialPort1_DataReceived() 子过程和串口类的 SerialPort1 实例的 DataReceived(收到数据中断)事件关联来,当该实例打开的串口收到一块数据后,即运行 SerialPort1_DataReceived() 里的代码(以接收数据)。

Me.Invoke(New EventHandler(AddressOf ReceiveUartMsg))

EventHandler 是一个委托,因为 .net 中不可跨线程操作,串口接收数据的线程无法让程序窗体上的文本框显示出收到的字符,所以需要做一下跨线程委托的处理,如果你不需要可以不管它。

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-22 11:02:46 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-22 11:10 编辑
washu 发表于 2019-1-21 16:31
引入一个串口控件(Winform)或串口类(WPF)即可,发给你两个例程。

这是一个 Winform 的,操作一 ...


谢谢washu老师,已经下载了,又有学习素材了 谢谢。
     还在熟悉HP3457A_Contec_UITest和HP3457A这两个例程,关于前面出现的几个问题应该双击控件在.vb中就出现相应代码, 就不会出现“找不到该事件”的错误了,最基本的操作给忘了。Timer1是个控件在窗体和下面消息窗之间藏着 找到了。WPF的用户控件.xaml窗体不能直接使用Timer1控件。
    现在以HP3457A已经修改用到其它表可以设置测量功能并测量记录 ,在使用中发现通讯地址不对或表关机,如果按下记录就会出现 MsgBox("Send ERR!")消息框循环弹出,关闭消息框,给出点击记录控件时间很短,来不及点击就进入下一个错误信息弹出,进入死循环,如果关闭消息框到下一次弹出消息框时间能延长就可以处理退出,看到HP3457A_Contec_UITest没有这个情况,设置boolean数据类型 true/false进行判断,正在弄看怎么移植到HP3457A中。
      在HP3457A_Contec_UITest中 DoEvents() 刷屏,在HP3457A是*.Refresh(),Record.ScrollToEnd(),textbox的滚屏在HP3457A中没有找到相应函数,需要些比较多语句才能实现。
      这段时间一直在琢磨如何修改HP3457A或HP3457A_Contec_UITest用到其他仪器测量,尤其是把HP3457A移植到HP3457A_Contec_UITest中碰了不是钉子,也是有所收获,如果拿着例程直接用,就不会这么深入了解了
     通过pc-表,进行测量确实可玩性比较多,需要多数据测量的最基本大量读数记录不需要人工录入,对测量结果判断和误差计算也方便了,谢谢指教!
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-22 11:18:12 | 显示全部楼层
washu 发表于 2019-1-21 16:31
引入一个串口控件(Winform)或串口类(WPF)即可,发给你两个例程。

这是一个 Winform 的,操作一 ...

“EventHandler 是一个委托,因为 .net 中不可跨线程操作,串口接收数据的线程无法让程序窗体上的文本框显示出收到的字符,所以需要做一下跨线程委托的处理,如果你不需要可以不管它。”谢谢,和在WPF的用户控件.xaml窗体使用Timer1类似吧需要委托的处理。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-27 16:45:17 | 显示全部楼层
本帖最后由 pdshyh 于 2019-1-27 16:52 编辑
washu 发表于 2019-1-21 16:31
引入一个串口控件(Winform)或串口类(WPF)即可,发给你两个例程。

这是一个 Winform 的,操作一 ...


washu 老师好,按照您的HP3457A例程修改34401a表测量用已经完成可以使用了,现在以HP3457A例程修改用pc-GPIB -hp6626,做一个三极管静态输入输出参数测试软件,分输入输出两块,现在输出测试中,用for嵌套第一层10步10档调整电源通道1输入电流输出,第二层0-10v步进调整电源通道2输出电压,电源直接接三极管。现在电源电压电流可以按照要求分步调整,textbox文本显示正常,写文件也正常,就是label不能及时显示电流电压读数,到循环结束才显示最后一行数据。现在没招了。
    本来想把 HP3457A_Contec_UITest里面设置boolean数据类型 true/false进行判断移植到34401a,看了半天头晕就没在弄。三极管测量更简单了直接输入输出键,
回复 支持 反对

使用道具 举报

     
发表于 2019-1-28 15:45:44 | 显示全部楼层
pdshyh 发表于 2019-1-27 16:45
...现在电源电压电流可以按照要求分步调整,textbox文本显示正常,写文件也正常,就是label不能及时显示电流电压读数,到循环结束才显示最后一行数据。现在没招了。


Textbox 和 Label 显示的数据是相同的吗?都是在程序中实时更新的?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-28 16:57:59 | 显示全部楼层
washu 发表于 2019-1-28 15:45
Textbox 和 Label 显示的数据是相同的吗?都是在程序中实时更新的?

      washu老师好,昨天实际运行Textbox是实时更新,文件写也是可以,就是 Label 只显示了数据的最后一行数据是相同的,我在办公室正在查在每个命令后面加了Sleep(200)的延时,在办公室运行现在 Label显示了,由于没有连接表,发送命令出现错误消息框,晚上在实际联机运行看看如何。
       昨天实验现在输入(电源通道1)串联一个手持数字表200μa电流档,输出(电源通道2)并联指针万用表电压档10v,输入设置10μa,电压实际表和电源读数是25μa左右,电压是0.002v,表和电源读数差几μa,可能是输出电压太低准备串联10Ω电阻看看最小电流如何.输出电压和设置0.02读数0.0189偏差5.5%
  2019/1/27 10:40:21 Ib:Vbe:Ic:Vce 0.0000200000 0.0021000000 -0.0000050000 0.0189000000
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 07:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表