LabVIEW部署Web服务

📅 2026/7/24 20:39:41 👁️ 阅读次数 📝 编程学习
LabVIEW部署Web服务

目录

  • LabVIEW部署Web服务
    • 1、创建项目
    • 2、创建Web服务
    • 3、新建WebVI
      • 3.1、使用GET方法
      • 3.2、使用POST方法
    • 4、 部署和对应URL
      • 4.1、应用程序:8080
      • 4.2、本地调试:8009
      • 4.3、NI Web服务器:9090(禁用)
    • 5、测试
      • 5.1、测试GET方法
      • 5.2、测试POST方法
    • 6、实际应用
    • 7、浏览器测试
    • 8、HTTP测试软件
    • 9、笔记

LabVIEW部署Web服务

1、创建项目

2、创建Web服务


可以修改名称,此处修改为test

3、新建WebVI

右键Web资源→选择"新建VI",一个VI对应一个方法

3.1、使用GET方法

①新建VI后,命名为plus,前面板添加三个数值控件,命名必须是英文,如果是中文,在测试的时候会报错,并且要修改接线端子

②右键plus→选择"GET"(默认为GET)

③右键test→选择"属性"

④选择"HTTP方法VI设置"→选中"plus"→选择"输出类型"→选择"接线端"和输出格式选择"JSON"

  • 这个也是方法默认的设置

3.2、使用POST方法

①新建VI后,命名为plus post,并修改程序框图

②右键plus post→选择"POST"

③选择"HTTP方法VI设置"→选中"plus"→选择"输出类型"→选择"数据流"

4、 部署和对应URL

①右键test→选择"应用程序Web服务器"→选择"开始(调试服务器)”→等待开始完成

②查看对应的URL
右键其中一个方法,此处是plus→选择"显示方法URL…"

  • 如果方法里面存在中文字符,选择显示方法URL后可能会闪退URL页面

    ③里面会存在三种端口,要看方法是部署到哪个服务器的
    应用程序:8080
    本地调试:8009
    NI Web服务器:9090
  • 由于端口很多,所以要注意哪个服务器在启用

4.1、应用程序:8080

右键test→选择"应用程序Web服务器"→选择"发布"→等待发布完成

4.2、本地调试:8009

右键test→选择应用程序Web服务器→选择开始(调试服务器)

4.3、NI Web服务器:9090(禁用)

右键test→选择"开始"

但是由于未知原因,一直连接不上服务器,因此不再使用

5、测试

5.1、测试GET方法

使用"本地调试:8009"
①右键"我的电脑"→选择"新建"→选择"VI"→命名为test_get

②修改VI如下→执行→返回{“c”:3}

5.2、测试POST方法

①右键"我的电脑"→选择"新建"→选择"VI"→命名为test_post
②修改VI如下→执行→返回“3.000000”

6、实际应用

程序在完成的情况下,需要生成应用程序,那么对应的URL里面的端口就不再是第5点的三个端口了,具体的端口在程序生成规范中设置。

  • 这个时候Web服务器就会部署在应用程序上,应用程序打开的时候,服务有效,如果应用程序关闭,则服务会无效
    ①新建VI,命名为main→简单一个循环结构,用于测试,程序框图如下

②右键"程序生成规范"→选择"新建"→选择"应用程序(EXE)"

③选择Web服务→勾选"test"→选择"应用程序Web服务器"→HTTP端口设置为8002(默认也是8002)

④选择"源文件"→选中main→点击箭头,把main设置到启动VI中→点击生成

⑤执行生成的exe

⑥新建一个VI,命名为test_main→拷贝test_get和test_post程序框图里面的程序到test_main→只改动端口为8002(这个在第③步设置的)→执行→返回正常,说明可以正常调用

7、浏览器测试

  • Get方法
  • post方法不能直接在浏览器中测试,会返回404

8、HTTP测试软件

  • Get方法
  • Post方法

9、笔记

  1. HTTP/1.1 200 OK
    Connection: Keep-Alive
    Server: Embedthis-http
    Content-Type: application/json; charset=utf-8
    Cache-Control: no-cache
    Date: 周三, 03 6月 2026 03:28:34 GMT
    Content-Length: 2
    Keep-Alive: timeout=60, max=199
  • 服务端返回HTTP/1.1,且Connection: Keep-Alive:代表服务端支持长连接
  • 客户端没主动Connection:Close
    结论:目前就是长连接
  1. 如果是根本没开web服务,但是客户端调用接口,会在head返回,而且不会有错误簇
    HTTP/1.1 404 Not Found
    Connection: Keep-Alive
    Server: Embedthis-http
    Cache-Control: no-cache
    Date: 周三, 03 6月 2026 04:03:08 GMT
    Content-Length: 190
    Keep-Alive: timeout=60, max=199
  2. LabVIEW不支持host为localhost的连接
  3. LabVIEW的JSON转换
  4. LabVIEW的JSON转换为LabVIEW簇对象,JSON里面必须包含LabVIEW簇对象的所有元素,可以多,不能少
  • 异常JSON:会报LabVIEW: (Hex 0xFFFA4722) The cluster element was not found in the JSON string.
{"messageType":"S","message":"閰嶆柟鏌ヨ鎴愬姛","data":{"ProcessList":[],"PartList":[],"StepList":[{"StepNo":"1","StepName":"OCV","StepDesc":null,"FilePath":null,"StartPageNo":null,"EndPageNo":null,"Operation":"SCAN_ARRAY","StepGroup":null,"ProcessList":[],"PartList":[]}]},"jsonRet":null}
  • 正常JSON:包含Tag
{"messageType":"S","message":"閰嶆柟鏌ヨ鎴愬姛","data":{"ProcessList":[],"PartList":[],"StepList":[{"StepNo":"1","StepName":"OCV","StepDesc":null,"FilePath":null,"StartPageNo":null,"EndPageNo":null,"Operation":"SCAN_ARRAY","StepGroup":null,"ProcessList":[],"PartList":[],"Tag":""}]},"jsonRet":null}
  • 关键簇,里面包含Tag,不包含jsonRet,即便JSON字符串包含,也不会报错
  1. JSON返回如果存在null,必须在这里设置为Ture,否则会报错:LabVIEW: (Hex 0xFFFA4723) Type mismatch between JSON and LabVIEW.
  2. 不完整的JSON会返回这个错误
    LabVIEW: (Hex 0xFFFA4725) The JSON string is invalid. JSON strings must be encoded in UTF-8 and must conform to the JSON grammar.