上犹电脑信息网我们一直在努力
您的位置:上犹电脑信息网 > win7问题 > 基于VB的VISA_串行通信与串口通信

基于VB的VISA_串行通信与串口通信

作者:上犹日期:

返回目录:win7问题

内容导航:
  • VB串口通信
  • vb串口通信编程,请高手帮忙
  • vb 串行通信MSCOMM
  • vb串口通信是用来干嘛的?
  • 一、VB串口通信

    描述




      上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。


      上位机工作原理


      两机如何通讯,一般取决于下位机,TCP/IP一般是支持的,但是下位机一般具有更可靠的独有通讯协议,购买下位机时,会带一大堆手册光盘,告诉你如何使用特有协议通讯,里面会举大量例子,一般对编程人员而言一看也就那么回事,使用一些新的API(API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节罢了,多语言支持功能模块,一般同时支持数种高级语言为上位机编程。


      通常上位机和下位机通讯可以采用不同的上位机示例图片通讯协议,可以有RS232的串口通讯或者采用RS485串行通讯。当用计算机和PLC通讯的时候,不但可以采用传统的D形式的串行通讯,还可以采用更适合工业控制的双线的PROFIBUS-DP通讯。采用封装好的程序开发工具就可以实现PLC和上位机的通讯,当然可以自己编写驱动类的接口协议控制上位机和下位机的通讯。


      通常工控机,工作站,触摸屏作为上位机,通信控制PLC,单片机等作为下位机,从而控制相关设备元件和驱动装置。


      上位机开发的软件


      1、visual studio 2008


      Microsoft Visual Studio 2008是面向Windows Vista、Office 2007、Web 2.0的下一代开发工具,代号“Orcas”,是对Visual Studio 2005的一次及时、全面的升级。


      VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。使用Visual Studio 2008可以高效开发Windows应用程序。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时Visual Studio 2008支持项目模板、调试器和部署程序。Visual Studio 2008可以高效开发Web应用,集成了AJAX 1.0,包含AJAX项目模板,它还可以高效开发Office应用和Mobile应用。


      2、MFC


      是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。


      3、Qt


      Qt[1] 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。


      4、GTK


      GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的,已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。并且,GTK+也有Windows版本和Mac OS X版。


      5、wxWidgets


      wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK+或Motif的Unix和MacOS。一个支持OS/2的版本正在开发中。开源跨平台, 和 CodeBlocks (开源跨平台的IDE)配合的很好, 而且可以用 wxSmith 很方便的设计界面。 而且学过MFC上手 wxWidgets 很快。


      上位机快速开发教程


      (1)准备工作


      一台装有VS2010的计算机,用于测试的虚拟串口软件。同时你必须具有VB基础知识,这个VB上位机开发是入门级的,仅将VB.NET通信基础方法稍作介绍。


      (2)串口通信常识


      在串口通信中,通过编写单片机程序知道,我们应对如下参数进行设置:波特率、数据位和停止位、奇偶校验位。如果自己编写上位机的时候,我们考虑的不能仅仅是这些了,下面介绍上位机开发过程中需要特别注意的知识点。


      MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。


      常用属性和方法


      利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。以下是MSComm控件的常用属性和方法:


      ●Commport:设置或返回串口号。其值从COM1到COM16。


      ●Settings:以字符串的形式设置或返回串口通信参数。


      ●Portopen:设置或返回串口状态。


      ●InputMode:设置或返回接收数据的类型。有文本和二进制两种类型。


      ●Inputlen:设置或返回一次从接收缓冲区中读取字节数。


      ●InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。


      ●InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。


      ●Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。


      ●OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。


      ●OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。


      ●Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。


      ●Rthreshold:该属性为一阀值。当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。用户可在OnComm事件处理程序中进行相应处理。若Rthreshold属性设置为0,则不产生OnComm事件。例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。


      ●Sthreshold:该属性亦为一阀值。当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。若Sthreshold属性设置为0,则不产生OnComm事件。要特别注意的是仅当发送缓冲区中字符数小于该值的瞬间才产生OnComm事件,其后就不再产生OnComm事件。例如Sthreshold设置为3,仅当发送缓冲区中字符数从3降为2时,MSComm控件设置Commevent属性为ComEvSend,同时产生OnComm事件,如发送缓冲区中字符始终为2,则不会再产生OnComm事件。这就避免了发送缓冲区中数据未发送完就反复发生OnComm事件。


      ●CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。


      (3)开发步骤(仅供参考)


      1. 运行VS2010,新建一个Visual Basic的Windows窗体应用程序项目。将窗体的StartPosition属性改为CenterScreen,运行程序时,窗体在屏幕中央显示。


    VB串口通信VB串口通信VB串口通信VB串口通信

      2. 由于默认情况下,通信所需的“Microsoft Communications Control,version 6.0”组件不在工具箱里面,所以我们需要手动添加。单击左侧的工具箱,并在控件栏单击鼠标右键,在弹出的菜单中选中“选择项”,在弹出的对话框中单击“COM组件”并选中“MicrosoftCommunications Control,version 6.0”,单击确定即可完成添加。


    VB串口通信VB串口通信

      此时移动鼠标到窗体上时,鼠标箭头就会变成电话的形状,在窗体任意位置单击放置该控件。


    VB串口通信

      3. 单击工具箱,在窗体上添加5个Label,并在属性里将Text属性依次改为:串口号、波特率、校验、数据位、停止位。再向窗体上添加5个ComboBox,从上到下依次排列。 4. 向窗体添加一个OvalShape和一个Button。将OvalShape的size属性改为“24,24”,FillStyle改为Solid。


      5. 向窗体添加一个CheckBox、一个按钮Button和一个TextBox,将CheckBox的Text属性改为“十六进制发送”将这个按钮的text属性改为“发送”。


      6. 向窗体添加一个Label和一个TextBox。更改Label的Text属性为“接收区”。 7. 向窗体添加一个CheckBox,将其Text属性改为“十六进制显示”


    VB串口通信

      下面将要对部分控件进行设置,这样可以减少代码的长度 将波特率一栏ComboBox的Item属性中添加如下内容:


    VB串口通信

      将校验一栏ComboBox的Item属性中添加如下内容


    VB串口通信

      将数据位一栏ComboBox的Item属性中添加如下内容


    VB串口通信

      将波特率一栏ComboBox的Item属性中添加如下内容


    VB串口通信

      四、源代码


      Public Class Form1 Dim cpSetting As String


      Dim com_last_num As Integer = 0 ‘定义一个全局变量,作用为记录上一个串口号 Sub GetSerialPortNames() ’搜索计算机中所有可用串口函数 On Error GoTo eRRHND ‘错误处理 ’搜索计算机中可用串口


      For Each sp As String In My.Computer.Ports.SerialPortNames ComboBox1.Items.Add(sp) Next


      ComboBox1.Sorted = True


      ComboBox1.SelectedIndex = 0 ‘选择搜索到的第一个串口名称 Exit Sub


      eRRHND: ’表示未搜到串口 MsgBox(“Oh, NO!”) End Sub


      ‘检测串口是否可用函数


      Private Function Test_COM(ByVal com_num As Integer) As Boolean


      If com_num 《》 com_last_num Or Button1.Text = “打开端口” Then ’如果选择的端口跟上次一样就不检测了


      On Error GoTo Comm_Error


      AxMSComm1.CommPort = com_num ‘将新串口号赋给ComPort


      AxMSComm1.PortOpen = True ’打开串口


      AxMSComm1.PortOpen = False ‘关闭串口


      Test_COM = True ’串口可用则返回


      Exit Function


      Comm_Error: ‘根据错误号作出相应处理 If Err.Number = 8002 Then


      MsgBox(“串口错误,请重新选择串口”, vbOKOnly, “错误提示!”) ElseIf Err.Number = 8005 Then MsgBox(“串口已打开!”) Else


      MsgBox(“其它错误”) End If


      Test_COM = False ’如果出错,则返回0 Exit Function Resume Next End If End Function


      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


      ‘载入窗体初始化


      GetSerialPortNames() ’将搜到的串口在下拉菜单中显示出来


      AxMSComm1.InBufferSize = 1024 ‘接收缓冲区大小,此项无法在串口打开时进行设置 AxMSComm1.OutBufferSize = 1024 ’发送缓冲区大小 ComboBox2.Text = “9600” ComboBox3.Text = “无校验” ComboBox4.Text = “8” ComboBox5.Text = “1” ChangePortProperty()


      ‘设置接收数据的格式为二进制


      AxMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary AxMSComm1.InputLen = 0 ’设置从缓冲区读取全部数据 AxMSComm1.RThreshold = 1 ‘设置接收串口OnCommon事件 AxMSComm1.PortOpen = True ’打开串口 If AxMSComm1.PortOpen = True Then


      OvalShape1.FillColor = Color.Green ‘OvalShape颜色设为绿色 Button1.Text = “关闭端口” ’按钮上的文字显示为关闭端口 Else


      OvalShape1.FillColor = Color.Red ‘OvalShape颜色设为红色 Button1.Text = “打开端口” ’按钮上的文字显示为打开端口 End If End Sub


      ‘打开关闭串口代码


      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


      Dim ptNum As Integer ’通过串口名称获取串口号


      If Len(ComboBox1.SelectedItem) 》 4 Then


      ptNum = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 2)) Else


      ptNum = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 1)) End If


      If AxMSComm1.PortOpen = False Then ‘如果串口是关闭的 If Test_COM(ptNum) = True Then ’如果选择的串口可用? ‘ ChangePortProperty()


      AxMSComm1.PortOpen = True ’则打开该串口


      Button1.Text = “关闭端口” ‘按钮上的文字显示为关闭端口 OvalShape1.FillColor = Color.Green ’OvalShape颜色设为绿色 End If Else


      AxMSComm1.PortOpen = False ‘关闭该串口


      OvalShape1.FillColor = Color.Red ’OvalShape颜色设为红色 Button1.Text = “打开端口” ‘按钮上的文字显示为打开端口 End If End Sub


      ’如下是访问网站的链接的代码,可以选择访问网站的浏览器,这里只使用默认的IE浏览器 Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked LinkLabel1.LinkVisited = True


      System.Diagnostics.Process.Start(“/p/huzhiqianglz”) End Sub


      ‘处理发送数据的代码


      Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


      Dim hexString() As Byte Dim source_Txt As String Dim i As Integer


      source_Txt = TextBox1.Text ’将要发送的数据存放到变量source_Txt中


      If CheckBox1.CheckState = CheckState.Checked Then ‘如果十六进制发送复选框被勾上 If Len(source_Txt) Mod 2 = 0 And Len(source_Txt) 《》 0 Then ’如果将要发送的数据长度不为或者能被2整除


      ReDim hexString(Len(source_Txt) / 2 - 1) ‘重新定义hexString数组 For i = 0 To Len(source_Txt) - 1 Step 2


      hexString(i / 2) = Val(“&H” & Mid(source_Txt, i + 1, 2)) ’将hexString转换成十六进制显示


      Next


      AxMSComm1.Output = hexString ‘将转换的数据发送到串口 Else ’否则提示格式不正确 MsgBox(“格式不正确!”) End If


      Else ‘否则输出字符串


      AxMSComm1.Output = TextBox1.Text


      End If End Sub


      Sub ChangePortProperty() Dim comSetting As String Dim parity As String = “” ‘关闭端口


      If AxMSComm1.PortOpen = True Then AxMSComm1.PortOpen = False End If ’获取串口号


      If Len(ComboBox1.SelectedItem) 》 4 Then


      AxMSComm1.CommPort = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 2)) Else


      AxMSComm1.CommPort = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 1)) End If ‘设置校验方式


      If ComboBox3.Text = “无校验” Then parity = “N”


      ElseIf ComboBox3.Text = “奇校验” Then parity = “O”


      ElseIf ComboBox3.Text = “偶校验” Then parity = “E” End If


      comSetting = ComboBox2.Text & “,” & parity & “,” & ComboBox4.Text & “,” & ComboBox5.Text


      ’串口设置格式:9600,N,8,1 AxMSComm1.Settings = comSetting End Sub


      ‘将十进制转换为16进制


      Private Function Decimal2Hex(ByRef c As String) As String Decimal2Hex = Hex(CInt(c)) If Len(Decimal2Hex) 《 2 Then


      Decimal2Hex = “0” & Decimal2Hex End If End Function


      ’串口号发生改变的处理程序


      Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged ChangePortProperty()


      End Sub


      Private ReadStr As String = “”


      Private Sub AxMSComm1_OnComm(ByVal sender As System.Object, ByVal e As System.EventArgs)


      Handles AxMSComm1.OnComm


      Dim i As Object


      Dim bytData As Object ‘用来从接收缓冲区读取数据


      Select Case AxMSComm1.CommEvent ’


      对接收事件进行处理


      Case MSCommLib.OnCommConstants.comEvReceive


      bytData = AxMSComm1.Input ‘将接收到的数据暂存 For i = 0 To UBound(bytData)


      If CheckBox2.CheckState = CheckState.Checked Then


      ReadStr = ReadStr & Decimal2Hex(CStr(bytData(i)))


      Else


      ReadStr = ReadStr & CStr(bytData(i))


      End If


      Next


      TextBox2.Text = ReadStr ’将转换后的数据在接收区显示


      End Select


      End Sub


      End Class


      五、程序中用到的几个函数解释


      Microsoft.VisualBasic.Strings.Right(String,Num):将字符串从右边开始截取字符串String中Num个字符。例如当String的值为“Welcome”,Num值为3,则该函数返回的值为字符串“ome”。另外通过将COM1拆分即可得到1,这是上例中得到得到串口号的方法。


      Val(String):将字符串类型转换为数值型。例如String为字符串“123”,则返回值为数值型123。 Hex(Integer):将整型数转换为16进制数。如:Integer为13,则返回十六进制的D


      其实有些函数看不懂也没关系,可能我介绍的不是很详细,有些资料上网查一下也很方便的,这里就不再多罗嗦了。


    二、vb串口通信编程,请高手帮忙

    按你提供的C2C7FAE1看为16进制数,其10进制值为-1027081503,如何处理成-99.99要看下位机是如何约定数据的来定.
    Text1 = &HC2C7FAE1 或 Text1 = VAL(&HC2C7FAE1)

    一般上下位机对数字值传递通常以16位二进制数字传递,而小数点不传递,仅乘一定倍率来实现.同时16位二进制数字按两个8位(ASCII码值)输送,上位机通过程序代码处理成10进制数.

    串口传送数据实质是传送ASCII码,如是8位二进制数据,其ASCII码值(10进制)为0-255。用二进制表示为00000000 - 11111111
    16进制表示为 00 - FF

    传送数据大于255,则用16位二进制(即2字节ASCII码组成)。10进制范围-32768到+32767。
    如有小数,则应由上下位机约定,不进行发送。
    串口通信中数制转换必须相当重视。
    以上是以二进制方式收发数据。
    也可直接以ASCII码的文本方式发送数据,而字节量大。

    三、vb 串行通信MSCOMM

    你贴出的代码明显不完整,从这两个函数看逻辑上没有什么大问题。
    简单分析如下:
    1、Private Function SendString() As Boolean

    调用该函数,则通过MSComm1指向的串口发送外部变量MyData中存储的数据。

    2、Private Function ReceiveString(ByRef strMessage As String) As Boolean

    调用该函数,则在限定的超时时限内循环接收串口接收到的数据,直至延时时间结束或者接收到结束符(此例中结束符是换行符vbCr)

    至于你提到的问题,
    1、“为什么不使用Oncomm事件”,这个一点都不奇怪,串行通讯的一问一答机制(此例应是这样的通讯机制)可以通过很多种方式来进行接收,例如通过Oncomm、或者使用定时器Timer、或者类似本例中的在一个函数中反复查看接收缓冲区等待客户机响应数据的结束符,或等待超时。无论采用哪种方式,视具体情况都可以达到几乎一样的效果。
    2、“从头到尾从来没有调用过”:这个有些奇怪,但你仅贴出了部分代码,不好判断。常理来讲,既然写出了这个代码,一定是在需要进行串口接收时要调用,不过从这段代码分析,用到了很多全局变量,代码书写风格不是很严谨,故建议你如果有完整可运行的代码,可全文搜索,应该会有结果。

    最后,如果是可以正常运行的代码,一定会在某处有串口接收功能的实现代码,或者调用该函数,或者使用上面提到的另外两种方法。

    希望可以帮到你!

    四、vb串口通信是用来干嘛的?

    串口一般是用来调试硬件的,与一些移动设备连接通过控制台查看一些调试信息。  目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)或其他相关设备。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,下面涉及到最为基本的接法,且直接用RS232相连。
      (1)DB9和DB25的常用信号脚说明
      DB9 | DB25
      pin function name pin function name
      1 数据载波检测 DCD 8 数据载波检测 DCD
      2 接收数据 RXD 3 接收数据 RXD
      3 发送数据 TXD 2 发送数据 TXD
      4 数据终端准备 DTR 20 数据终端准备 DTR
      5 信号地 GND 7 信号地 GND
      6数据设备准备好DSR 6 数据设备准备好 DSR
      7 请求发送 RTS 4 请求发送 RTS
      8 清除发送 CTS 5 清除发送 CTS
      9 振铃指示 RI 22 振铃指示 RI
      (2)RS232C串口通信接线方法(三线制)
      首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连
      同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连
      两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)
      串口连机线
      DB9-DB9
      2-3,3-2,5-5
      DB25-DB25
      2-3,3-2,7-7
      DB9-DB25
      2-2,3-3,5-7
      DB9-DB25串口转接线
      2-3,3-2,5-7
      上面是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接。

    相关阅读

    • 基于VB的VISA_串行通信与串口通信

    • 上犹win7问题
    • 内容导航: VB串口通信 vb串口通信编程,请高手帮忙 vb 串行通信MSCOMM vb串口通信是用来干嘛的? 一、 VB串口通信 描述 上位机是指可以直接发出操控命令的计算机,一般是PC/host computer
    • 新会不服江门_首善吴正新

    • 上犹win7问题
    • 内容导航: 新会 扛起首善之责 当好江门高质量发展标杆 第四届 中国民营企业投资与发展论坛暨北大博雅同学年会举办方是谁有知道的吗? 平山县敬业冷扎是干什么的 翠林投资集团有
    • 32位Cad_ps2018cc有没有32位的

    • 上犹win7问题
    • 内容导航: Solidworks2017(64位、32位)软件安装教程 windows7 64位系统怎么安装32位的solidworks,给高分。 solidworks2012简体中文版32位电脑怎样安装64位软件 下了一个solidworks软件,安装在电脑
    • 星际争霸2本座_星际争霸本座是啥意思

    • 上犹win7问题
    • 内容导航: 星际争霸中那些有趣的“本座”外号 星际争霸中各族中各兵种的外号是什么? 【星际争霸】关于选手绰号 《星际争霸 2》职业选手都有哪些外号,缘由是什么 一、 星际争霸
    • 麒麟970相当于骁龙多少_骁龙865

    • 上犹win7问题
    • 内容导航: 骁龙625加持 红米7上手:水滴屏/渐变机身 红米7怎么样?值得购买么? 红米note7怎么样?值得买吗 红米7参数是怎样的? 一、 骁龙625加持 红米7上手:水滴屏/渐变机身 红米
    • 三氯化铁电路板_工业制备电路板

    • 上犹win7问题
    • 内容导航: 高中化学教材拾遗——FeCl3三氯化铁在刻蚀电路板 因为铁的金属性比铜强,所以可以用FeCl3溶液刻蚀铜电路板,这种说法正确吗 Fecl3溶液可以腐蚀线路板生的CU,说明FE的非金
    • 2018小家电品牌规模前10_2018家电销售数据

    • 上犹win7问题
    • 内容导航: 2018中国家电及消费电子展:数百场活动联袂演出年度大秀 2020印度消费电子展在哪里举办?具体时间是哪几天? 印度尼西亚国际消费类电子展怎么样 青岛国际消费电子展观
    关键词不能为空
    极力推荐

    电脑蓝屏_电脑怎么了_win7问题_win10问题_设置问题_文件问题_上犹电脑信息网

    关于我们