VB串口通讯方式解释
目前,Visual Basic (简称VB) 已成为WINDOWS 系统开发的主要语言,以其高效、简单易学及功能强大的特点越来越为广大程序设计人员及用户所青睐。VB 支持面向对象的程序设计,具有结构化的事件驱动编程模式并可以使用无限扩增的控件。在VB 应用程序中可以方便地调用WINDOWS API函数,使得编程效率提高,应用功能增强。
利用VB 提供的这些功能,我们可以有三种方法完成串口通信。一种是用VB 提供的具有强大功能的通信控件;另一种方法是调用WINDOWS API 函数,使用WINDOWS 提供的通信函数编写移植性强的应用程序;第三是利用文件的输入/ 输出完成,该方法简便易行,但有一定的局限性。
一、利用通信控件(MSCOMM) 完成串口通信
VB 提供了通信控件MSCOMM,文件名为MSCOMM. VBX。该控件可设置串行通信的数据发送和接收,对串口状态及串行通信的信息格式和协议进行设置。在通信过程中可以触发OnComm事件,在该事件过程进行数据检验处理及检错,还可以通过编程访问CommEvent 属性来了解通信的情况,进行收发数据的处理。每个通信控件对应一个串口,如果要访问多个通信口,则要设计多个通信控件。
1. 通信控件的事件及基本属性
(1) 事件
OnComm:通信控件只提供了一个事件,该事件的触发可以对串口的通信事件及错误进行处理。通过对CommEvent 属性的判断可知当前的通信错误和事件,分别对每个Com2mEvent 值进行编程就完成了对各个错误和事件的处理。如:CommEvent = MSCOMM—EV—SEND 表示发送事件。这些信息可从VB 提供的常量文件CONSTANT. TXT中查出。
(2) 属性
CommPort :设置通信控件与哪个串口相连接,设置并返回通信口号。
Setting :设置通信的信息格式,为字符型。顺序为:波特率、校验、数据位、停止位。
PortOpen :布尔型、开关通信口。
InputLen :从接收缓冲区读取字符个数。
Input ,Output :读取接收缓冲区或写入发送缓冲区字符以上五种属性对串口完成基本的设置和操作,下面的三种属性是描述如何利用VB 提供的事件驱动机制来实现通信。
CommEvent :返回通信过程中产生的错误信息及事件,了解通信状况。
SThreshold :设置并返回不触发OnComm事件时发送缓冲区被允许的最少字符数。当缓冲区的字符少于设置的值时,则触发OnComm事件,并把CommEvent 设为MSCOMMM—EV—SEND。当SThreshold = 0 则禁止发送触发OnComm 事件,当SThreshold = 1 则发送缓冲区为空时就触发OnComm事件。利用这一属性,就可完成发送数据后的一系列操作。如:对刚发送的数据进行处理,当串口是和MODEM通信时,发送完数据后可进行拆除线路联接、挂机等操作。
RThreshold :设置并返回不触发OnComm事件时接收缓冲区被允许的最多字符数。当缓冲区的字符多于设置的值时,则触发OnComm 事件,并把CommEvent 设为MSCOMM—EV—RECEIVE,当RThreshold = 0 则禁止接收触发OnComm 事件,当RThreshold = 1 则接收缓冲区有一个或更多字符时就触发OnComm事件。利用这一属性,就可完成对串口接收数据的处理。
2. 利用通信控件的实例
Sub Form1 —load ()
form1. show
′设置COM1
comm1. commport = 1
comm1. Setting = " 9600 ,o ,8 ,1" ′波特率:9600 奇校验,8位数据,1 位停止位
comm1. Inputlen = 0 ′读取接收缓冲区的所有字符
comm1. OutBufferSize = 512 ′设置发送缓冲区为512 字节
comm1. InBufferSize = 512 ′设置接收缓冲区为512 字节
comm1. SThreshold = 0 ′禁止发送事件
comm1. RThreshold = 1 ′每一个字符到接收缓冲区都触发接收事件
′设置COM2
comm2. commport = 2
comm2. Setting = "2400 ,e ,8 ,1"
′波特率:2400 偶验,8 位数据,1 位停止位
comm2. Inputlen = 0 ′读取接收缓冲区的所有字符
comm2. OutBufferSize = 512 ′设置发送缓冲区为512 字节
comm2. InBufferSize = 512 ′设置接收缓冲区为512 字节
comm2. SThreshold = 1 ′发送缓冲区空触发发送事件
comm2. RThreshold = 0 ′禁止接收事件
′打开COM1 ,COM2
comm1. Portopen = True
comm2. Portopen = True
Timer1. interval = 5000
End Sub
Sub Comm1 —OnComm()
Dim Inbuff as string
Dim i as integer ,n as integer ,t as integer
Select Case Comm1. CommEven
case MSCOMM—EV—RECEIVE
Inbuff = Comm1. Input
n = len ( Inbuff)
For i = 1 to n
t = Asc (Mid ( Inbuff ,i ,1) ) or &HFF
print f
Next i
End Select
End Sub
Sub Comm2 —OnComm()
Select Case Comm2. CommEvent
Case MSCOMM—EV—SEND
Print time
End Select
End Sub
Sub Timer1—Timer ()
Comm2. output = Second (Now)
End sub
二、通过调用API 函数实现通信
以上说明了用VB 提供的控件实现通信的方法,只要理解了VB 控件的机制就很容易完成对串口的操作,但可移植性差。但VB 可以很容易调用API 函数实现通信。
1. VB 对API 的调用
VB 使用动态链接库DLL(Dynamic Link Libraries) 的能力,大大扩展了其功能。WINDOWS 本身提供了API 函数包括三大动态链接库: KERNEL 库、GDI 库、USER 库,通过VB 用户可以直接调用这些库中的函数。调用之前,必须首先在VB 中声明。该声明可为模块级或窗体级,当作为模块级声明时,其作用域为所有FORM和MODULE,而作为窗体级声明时其作用域为该声明所在的FORM。
VB 调用DLL 的格式:
Declare Sub 过程名Lib″库名″Alias″别名″] ( [ByVal 参数As 类型])
Declare Function 函数名Lib″库名″[Alias″别名″] ( [ByVal参数As 类型]) As 类型
在声明中:DECLARE 表示声明DLL 中的函数,当声明是不具有返回值的过程时用SUB 关键字,而如果调用的函数具有返回值,则必须用FUNCTION 关键字将其声明为函数并在声明语句的最后用AS 指明函数返回值的类型。LIB 关键字表示当前声明的过程或函数是库名所指定的库中函数而非VB本身的函数。库名,就是对应动态链接库的名称,其中通信函数在USER 库中。ByVal 关键字将原参数数据类型一一对应到VB 类型中。
WINDOWS 的HELP 文件WINSDK. HLP 中包含了完整的WINDOWS API 函数信息,可用该文件查看联机函数、数据结构及错误信息。
2. API 提供的通信函数
为了方便说明,我们将有关通信的函数及相关的数据结构放在全局模块中,文件名为COMM.BAS(见API 编程函数实例) 。以下是这些函数的基本介绍:
(1) OpenComm( IpComName As String ,wInQueue As Integer ,wOutQueue As Integer)
IpComName :设备名,以“COMn”的形式来说明,n 为设备号;wInQueue 、wOutQueue :分别以字节为单位说明发送、接收缓冲区的大小。该函数调用成功返回打开的设备号,否则返回一负数代表错误信息码。
(2) SetCommState ( IpDCB As DCB)
IpDCB :是DCB 结构存放设备所希望的通信设置(DCB 结构如COMM.BAS 中所示) ,其中DCB 的ID 成员必须标识该设备。如果函数调用成功返回0 ;否则,返回值小于0。
(3) ReadComm(nCid As Integer , IpBuf As String ,nSize AsInteger)
WriteComm(nCid As Integer , IpBuf As String ,nSize As Integer)
这是用来对通信设备进行读写的函数,nCid :说明要读写的通信设备号, IpBuf :为读写缓冲区,nSize :为要读写的字节数。如果读写成功,返回读写的字节数,否则是小于0 的值,并且其绝对值为读写的字节数。
(4) Closecomm(nCid As Integer)
该函数关闭nCid 所指定的通信设备,并且释放分配给设备的发送,接收缓冲存储器,调用成功返回0 ;否则,返回值小于0。
(5) BuildCommDCB( IpDef As String , IpDCB As DCB)
lpDef : 为一字符串指定设备控制信息,此字符串具有MS-DOS 中MODE 命令所使用的参数形式。IpDCB :为一DCB数据结构。该函数将IpDef 字符串转换成串行设备控制块(DCB) 代码。
(6) GetCommError (nCid As Integer , IpStat As COMSTAT)
该函数检取nCid 指定的设备最近的错误值和当前状态,IpStat :是COMSTAT结构,具体形式如COMM.BAS 中所定义的。返回值为COMM.BAS 中带CE- 的常量的某种组合。
3. 用API 函数编程实例
这个例子是一仿真发送机,将从键盘输入的字符发送给COM端口。在FORM中加一按钮COMMAND1 来关闭通信口
Type DCB
Id As String 3 1
BaudRate As Integer
ByteSize As String 3 1
Parity As String 3 1
StopBits As String 3 1
RlsTimeout As Integer
CtsTimeout As Integer
DsrTimeout As Integer
Bits1 As String 3 1
Bits2 As String 3 1
XonChar As String 3 1
XoffChar As String 3 1
XonLim As Integer
XoffLim As Integer
PeChar As String 3 1
EofChar As String 3 1
EvtChar As String 3 1
TxDelay As Integer
End Type
Type COMSTAT
Bits As String 3 1
cbInQue As Integer
cbOutQue As Integer
End Type
Declare Function OpenComm Lib ″User″(ByVal IpComName As String , ByVal wInQueue As Integer , ByVal wOutQueue As Integer) As Integer
Declare Function SetCommState Lib ″User″ ( IpDCB As DCB)As Integer
Declare Function ReadComm Lib ″User″(ByVal nCid As Integer , ByVal IpBuf As String , ByVal nSize As Integer) As Integer
Declare Function WriteComm Lib ″User″(ByVal nCid As Integer , ByVal IpBuf As String , ByVal nSize As Integer) As Integer
Declare Function Closecomm Lib ″User″(ByVal nCid As Integer) As Integer
Declare Function BuildCommDCB Lib ″User″ (ByVal IpDef As String , IpDCB As DCB) As Integer
Declare Function GetCommError Lib ″User″ (ByVal nCid As Integer , IpStat As COMSTAT) As Integer
Global IpDCB As DCB
Global nCid As Integer
Sub Form1 —load ()
Dim comset As String
comset =“COM2"
nCid = OpenComm(comset ,512 ,512) ′打开COM2 设置接收,发送缓冲区为512 字节
If nCid < 0 Then ′处理错误
MsgBox“不能打开COM:" + Str (nCid) +“Error Number :" + Str (nCid) ,16
end
end if
Command1. Caption =“关闭通信口" ′设置串口DCB 设备控制块
comset =“COM2 :9600 ,n ,8 ,1"
If (BuildCommDCB(comset ,LpDCB) ) Then
MsgBox“不能建立COMM DCB" ,16
end
end if
LpDCB. Id = Chr (nCid)
If (SetCommState (LpDCB) ) Then ′设置串口状态
MsgBox"不能设置串口状态" ,16
end
endif
End Sub
Sub Form1-keyPress (keyAscii As Integer)
Dim nsend As integer ,x As integer
Dim Lpstate As COMSTAT ′通信状态块
Static inbuff as string
inbuff = imbuff + Chr ( KeyAscii)
x = GetCommError (ncid ,Lpstate) ′读取当前串口错误或状态
if lpstate. cbOutQue < 512 Then ′送缓冲区有空间否?
Nsend = WriteComm(nCid ,inbuff ,Len (inbuff) ) ′发送inbuff
if Nsend < = 0 then Nsend = - Nsend ′忽略错误
inbuff = Mid (inbuff ,Nsend + 1) ′清除已发送的字符
end if
end if
End Sub
Sub Command1-Click()
Dim Nclose As integer
Nclose = CloseComm(nCid)
If Nclose < 0 Then
MsgBox“不能关闭COMM口:" + Str (nCid) ,16
end
else
ncid = 0
end if
Cmmand1. Caption =“通信已关闭”
End Sub
三、用文件输入/ 输出技术完成通信
用VB 提供的以上两种方法已足以应付各种串行通信的问题。另外还可以用文件输入/ 输出的方法完成简单的通信应用程序,如拨号。它用我们非常熟悉的BASIC 输入/ 输出指令,如:OPEN、CLOSE、GET、PUT(PRINT、WRITE) 、ERR 来完成打开、关闭、读、写和检错通信口的功能。由于以上指令常在BASIC 中使用,所以不在本文中详细介绍。仅举一小例子来说明问题。该例子是在FORM1 中有两个按钮,
通信模块向主模块提供文件传输与消息传递的基本服务, 主模块使用文件传输服务来传输数据, 使用消息来传输控制信息。通信模块用RS232 接口或者远程网络对应用程序提供的接口来进行文件和消息的传输。
通信模块是以DDE(动态数据交换) 会话的形式来提供通信服务的, DDE是Windows 操作系统中一种进程之间进行通信的基础机制。要进行一次数据交换, 发送方的主模块作为客户与通信模块请求建立DDE会话,通信模块请求与接收方的通信模块建立一个通信链路, 接收方的通信模块再作为客户请求与接收方的主模块建立DDE会话。这样,主模块不但可以请求通信模块发送文件, 而且可以以消息的形式向接收方的主模块传递关于数据的信息,进行对话。
图3 说明了表格的传输过程, 文件、图形的传输都是类似的,使用RS232 接口作为通信链路的详细传输步骤如下:
1. 发送
主模块负责将发送的数据组织为约定格式的TXT文件,放在约定的目录下, 然后向通信模块提出发送请求。通信模块被DDE请求激活后,进入如下流程的执行:
①读出主模块中的发送文件名表。
②向MODEM发出拨号命令(DIAL) 。
③等待MODEM发来接通状态信息(CONNECT) 。若有
CONNECT线路接通,此时对方的通信模块被激活进入等待接收状态。否则通知用户线路无法接通并返回。
④发送“发送文件”消息,通知对方将要发送文件。
⑤发送“发送一个文件”消息。
⑥发送一个文件。
⑦文件若没发送完转向⑤。
⑧发送“结束发送文件”消息。
⑨挂断线路。
2. 接收
应答模块在通信模块运行时(不包括正在处理发送的时间) 在后台不断地被执行, 它的主要功能是检测是否有振铃信号(RING) ,如果没有振铃信号退出该模块,否则:
①向MODEM发应答命令(ANSWER) 。
②等待MODEM发来CONNECT状态信息。
③将通信模块调至前台来运行。
④等待消息, 若是“发送文件”消息, 调用应答发送模块。接收随机发送来的文件。
应答发送模块被调用后:
①处理消息。若不是“发送一个文件”消息,转向④。
②接收一个文件。
③转向①。
④挂断线路。
⑤与ACCESS 建立DDE会话,通知主模块处理已接收到的TXT文件, 即将TXT文件引入到数据库中, 如果以前曾经发送过则注意要覆盖已经过时的数据。长途电信线路计算机维护管理系统是一个集成的系统。从技术上讲,它是数据库技术与通信技术的集成,并且进一步考虑了与图形系统及网络技术的集成。它的应用必将为全国的长线维护带来良好的效益。
一个为拨号操作,一个为挂机操作,程序很简单。
Sub Form1 —load ()
Dim Telnum As Sting
Command1. Caption = " "
Command2. Caption = " "
End Sub
Sub Command1 —Click()
Open“COM2" For Output As # 1
print # 1 ,Telnum
End Sub
Sub Command2 —Click()
Telnum=“ATH"
Print # 1 ,Telnum
Close # 1
End Sub
这个小例子仅用了PRINT来发送数据,该命令自动在字符串后加了回车符。其他指令如PUT、WRITE 亦可完成。但是注意变量TELNUM的格式,要在最后命令字符串后加回车符。WINDOWS 使用DOS 操作完成文件处理,所以将通信端口当成文件来操作,就仅使用了DOS 系统。这种方法十分简便。但是,使用文件输入/ 输出就使得通信不可靠,进来的字符可能遗漏,尤其是在2400b/ s 以上的速率传输数据时。原因是这种方法仍基于DOS 操作,使通信无法高速传输或在WINDOWS 这样的多任务环境下使用。经过长期的实践,笔者认为以上三种通信方法各有利弊。如果在以低速传输且不十分复杂的情况下,那么可选用第三种方法。而当在系统复杂传输速率高的情况下,则要选择前两种。第一种学习起来快,而且程序为事件驱动程序模块化;使用第二种方法要对WINDOWS API 函数有深入了解对熟悉WINDOWS API 函数的程序设计人员来说,无疑是个好方法,而且程序可移植性强。
相关文章:
VB串口通讯方式解释
目前,Visual Basic (简称VB) 已成为WINDOWS 系统开发的主要语言,以其高效、简单易学及功能强大的特点越来越为广大程序设计人员及用户所青睐。VB 支持面向对象的程序设计,具有结构化的事件驱动编程模式并可以使用无限扩增的控件。在VB 应用程序中可以方便地调用WINDOWS API函数…...
Mybatis-Plus不能更新对象字段为空值问题解决
问题描述: 在使用Mybatis-Plus调用updateById方法进行数据更新默认情况下是不能更新空值字段的,而在实际开发过程中,往往会遇到需要将字段值更新为空值的情况,该如何解决呢? 原因分析: Mybatis-Plus中字…...
d3dx9_43.dll丢失怎么解决
d3dx9_43.dll丢失的影响 当我们在运行某些需要DirectX 9支持的程序时,如果系统中缺少d3dx9_43.dll文件,就会出现错误提示,导致程序无法正常启动。这个错误提示通常会类似于“找不到d3dx9_43.dll”或“d3dx9_43.dll不存在”。 打开电脑浏览器…...
【花雕】全国青少年机器人技术一级考试备考实操搭建手册8
随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…...
【UE5 Cesium】09-Cesium for Unreal 子关卡应用实例(下)
效果 通过按钮点击事件实现子关卡的切换 步骤 新建两个Actor蓝图作为GeoMarker,分别命名为“BP_GeoMarker_BeiJing”、“BP_GeoMarker_ShangHai” 分别打开这两个蓝图,添加文本渲染组件 在指定的地理位置上拖入蓝图“BP_GeoMarker_BeiJing” 控制“BP_…...
插值应用案例2
案例1 高点和高程 在一丘陵地带测量高程,x和y方向每隔100m测一个点,得到高程如下表所列,试插值一曲面,确定合适的模型,并由此测到最高点和相应的高程。 x0/z0\y0 100 200 300 400 500 100 636 697 624 478 …...
【新星计划Linux】——常用命令(1)
作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页 目录 前言 一.常用命令 1.Linux的基本原则: 用户接口: 2.命令形…...
python应用-excel和数据库的读取及写入操作
近日完成一个交办任务,从excel表读取数据,根据ID在数据库表匹配相应的记录,并回填至excel表里。我使用的工具是python。下面记录下相应的模块。 一、从excel表读取数据 import pandas as pd import numpy as npdef read_excel():path &quo…...
MySQL Optimization Learning(一)
目录 一、MySQL性能监控 1、show profile 2、performance schema 2.1、MYSQL performance schema详解 3、show processlist 一、MySQL性能监控 MySQL官网 拖到首页最下方找到 MySQL Reference Manual ->cmd命令行 C:\Users\Administrator>mysql -uroot -proot …...
Flink消费kafka出现空指针异常
文章目录 出现场景:表现:问题:解决: tombstone : Kafka中提供了一个墓碑消息(tombstone)的概念,如果一条消息的key不为null,但是其value为null,那么此消息就是墓碑消息. …...
【探索 Kubernetes|作业管理篇 系列 9】Pod 的服务对象
前言 大家好,我是秋意零。 在上一篇中,我们介绍了 Pod 的生命周期以及区分 Pod 字段的层次级别,相信你对此有了充分的认识。 今天,我们还会接着以 Pod 展开,说说它的 “服务对象”,一听就知道是对 Pod 提…...
多种拖拽= =自用留档
<template> <div class"main-drag"> <div v-if"stencil 0" class"mapped-fields"> <el-form ref"mapped" :model"mapped" class"demo-fieldsForm"> <el-form-item label"切换数…...
贝叶斯与认知——读《贝叶斯的博弈》有感
关于对贝叶斯与认知问题的相关思考 一、贝叶斯定理二、贝叶斯与认知的本质三、经验的偏见四、总结 自古以来,人们就在思考知识来自何处,“冯翼惟象,何以识之?”,对此的思考逐渐发展成哲学的认识论分支。德国哲学家康德…...
MySQL安装失败starting the sever
MySQL安装失败starting the sever 如果电脑是第一次安装MySQL,一般不会出现这样的报错。starting the sever失败,通常是因为上次安装该软件没有清除干净。 第一种解决方法:完全卸载mysql,重新安装 完全卸载该软件的办法&#…...
合并文件夹中所有文件,并输出重复的条形码值
文章目录 一、需求二、处理方式三、代码实现 一、需求 每天会生成一个记录文件(文件名按日期yyyyMMdd格式命名),记录文件中记录有条形码的内容,需要合并最近20次的数据,并提取出有重复的条形码。 也可以进行最近30天数…...
P3089 [USACO13NOV] Pogo-Cow S 弹簧踩高跷
P3089 [USACO13NOV] Pogo-Cow S 弹簧踩高跷 洛谷题目传送门 文章目录 P3089 [USACO13NOV] Pogo-Cow S 弹簧踩高跷题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目大意方法一(线段树维护dp)code 方法二 (单调队列维护dp&…...
计算机网络 - 第一章(下)
1.2_1 分层结构、协议、接口、服务_哔哩哔哩_bilibili1.2_1 分层结构、协议、接口、服务是王道计算机考研 计算机网络的第7集视频,该合集共计76集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV19E411D78…...
【Uniapp】小程序携带Token请求接口+无感知登录方案2.0
本次改进原文《【Uniapp】小程序携带Token请求接口无感知登录方案》,在实际使用过程中我发现以下bug: 若token恰好在用户访问接口时到期,就会直接查询为空,不反映token过期问题(例如:弹窗显示订单查询记录…...
Ubuntu常用命令
文章目录 1:文件管理2:文档编辑3:系统管理4:磁盘管理5:文件传输6:网络通讯7:设备管理8:备份压缩9:其他命令扩展:知识干货 1:文件管理 ls命令 –…...
ERP重构-SLA子分类账-分布式实现方案
背景 ERP中的GL总账模块,明细数据来源于各个业务模块如库存、成本、应收、应付、费控、资产等,统称为子模块,生成的账叫做子分类账。然而记账的业务逻辑各式各样,但是最终输出都是来源、类型、期间、科目、借贷金额等等关键信息。…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
