建立EAI方式与SAI方式之间的通信

华为云EAI应用(1)定制语言合成 华为云EAI应用(1)定制语音合成 导语:最近华为云在搞年中云促销活动,其中EAI应用,如OCR、语音交互、内容审核等API服务价格低至1元/年,经过笔者这两天的使用体验来说,其稳定性和准确性还是不错的,而且文档简单易懂,十分方便,应该是国内顶尖的EAI应用提供商之一。这篇文章详细介绍了定制语音合成的使用方法。 一. 定制语音合成介绍 ​ 语音交互是重要的EAI应用之一,合理运用现有的API,可以省去很多人工成本。华为云现有体系中,语音交互分为了“一句话识别”、“定制语音识别”、“定制语音合成”等,现 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 解决JAVA控制VRML场景的一个实际问题

侯光敏 (guangmin001@263.net)
2002 年 1 月

搞过java语言对vrml场景控制的人都知道,目前有两种方式对vrml场景进行控制,那就是EAI方式和SAI方式.EAI的全称是External Authoring Interface ,使用这种控制方式可以在applet中一目了然地输入各种参数来改变场景的内容,控制是非常灵活的.SAI方式,它不需要有applet的存在,只要为场景中的物体写相应的脚本代码即可,使用它可以实现许多VRML规范不能提供的复杂逻辑显示.两者可以说是各有所长,但是我在写一个控制VRML场景的程序时遇到了问题.

我在场景中放入了一组芯片模型,我想要达到的目的是,点击场景中的某芯片或某芯片的某管脚时,能在applet中显示芯片的内部结构图或者管脚的名称和电平状态,我必须要使用这些信息来改变相应的模型参数.但是单纯的SAI方式不能和applet通信,点击的结果不能被applet感知.而单纯的EAI方式也解决不了这个问题,因为要控制场景中的某个模型,必须先得到那个模型的名字.但在这种情况下模型的名称不可能被事先指定,它必须随着鼠标选择的变化而变化.要解决这个问题,必须在EAI方式控制和SAI控制之间建立起沟通信息的途径.

在查阅了VRML规范之后,我发现VRML规范中提供了一种供用户扩展的节点类型PROTO,由此我想出了解决这个问题的办法.其实这个办法很简单,就是用PROTO的各个自定义域来缓存需要通信的数据. 具体的做法是:在场景文件中定义一个名为Bridge的PROTO节点,为它增加一系列的域.在我这个具体问题中,我定义了SFString name,SFBool voltage两个域,还有SFSting型的pointA,pointB.然后为每个需要和applet通信的模型加入SAI方式的代码,单击事件(也可以是别的事件)触发一个过程,该过程把模型的名字写入Bridge的name域或pointA,pointB,把状态写入voltage域.

以下是VRML文件示例代码:



#the node that exchange data between SAI and EAI

PROTO Bridge  [ exposedField SFString   pointA "###   ^-- ^"

           exposedField SFString    pointB "###   ^ --^"

              exposedField SFString   name     "null"

              exposedField SFBool     voltage   FALSE



]{}  //

DEF se Bridge{}

.......

DEF leg17 Transform {

  translation 35.5 16.7 -203

  rotation 0.577 0.577 -0.577 -4.19

  children [

      DEF   leg17_touch TouchSensor {}

    Shape {

      appearance USE legcolor

    geometry USE leg17-FACES

    }

  ]

}



......

DEF leg17_S Script {   //芯片第十七号管脚的节点

    url "NodeScript.class"

    eventIn SFBool leg17

    field SFNode node USE leg17

    field SFNode select USE se

}

.....

ROUTE leg17_touch.isActive TO leg17_S.leg17

.....

以下是节点的脚本代码片断:



public class NodeScript extends Script

{

   private SFNode theSelected;

   private SFString selectedA,selectedB;

   Browser br;



   public void initialize()

   {

      theSelected=(SFNode)getField("select");

      br=getBrowser();

   }



   public void processEvent(Event e)

   {  ConstSFBool v=(ConstSFBool)e.getValue();

      Node selected=(Node)theSelected.getValue();

      //**获得交换节点的域

      selectedA=(SFString)selected.getExposedField("pointA");

      selectedB=(SFString)selected.getExposedField("pointB");

      //*/

      br.setDescription(e.getName());  //在浏览器底部显示节点名



    //在此有改动,不使用开关值,改用队列先进先出写值  2001/11/30

     if(v.getValue())

     { selectedB.setValue(selectedA.getValue());//ba

       selectedA.setValue(e.getName());         // newValueb

     }



   }

}

然后在EAI方式的代码中为applet加入一个线程,它无限循环的读Bridge节点的各个域值然后显示出来,完成了数据从SAI向EAI的传递,就这么简单.以下是示例代码:



public class displayPanel extends Panel implements Runnable

{  public static Label label1 = new Label();

   public static Label label2 = new Label();

   Browser br;

   .......

     public void run()

   {

    while(true) //循环监听点击情况

      { swich=VrmlObject.getSwichName(br);

        voltage=VrmlObject.getSwichVoltage(br);

        displayPanel.label1.setText(VrmlObject.getNodeA(br));//VrmlObject类封装了对节点的访问

        displayPanel.label2.setText(VrmlObject.getNodeB(br));

      }

  }

}

使用这种方式,你可以扩充Bridge的域来缓存各种VRML规范所规定的数据类型.

关于作者
侯光敏:天津理工学院计算机科学与工程系大四学生,正在研究用java和vrml实现多用户协同的虚拟实验室的项目.欢迎和我联系:guangmin001@263.net
SAI接口 我们以 i.MX6UL 为例,i.MX7D / S 的用法与它相似。SAI_RX_SYNC ------------用于接收信道的左右信道中的帧同步信号。SAI_TX_SYNC ------------用于传输信道的左右信道中的帧同步信号。SAI_RX_BCLK ------------接收信道的位时钟。SAI_TX_BCLK ------------传输信道的位时钟。SAI_RX_DATA ------------接收信道的数据。SAI_TX_DATA ------------传输信道的数据。 阅读详情

相关推荐

外系统对接用友U8

用友U8提供的数据集成方式有:1、EAI模式;2、OpenAPI模式; 1、EAI模式   它是U8早期版本就提供的一种企业数据集成模式,它比较适合用于内网系统与U8之间的数据集成,比如:WMS系统、MES系统等。   具体的实现方式有两种:     1、通过调用COM组件的方式实现与U8系统的通信;     2、通过HTTP的方式,U8提供了一个用于交互的HTTP地址,可以I...

aozu1180的博客 3922

SONiC中的SAI接口的操作指令以及相应的解释

SONiC是一个基于开源软件的网络操作系统,它使用SAI(Switch Abstraction Interface)接口来与交换机芯片进行通信。下面是一些常见的SAI接口操作指令及其解释: create_switch() - 创建交换机实例 这个指令会在系统中创建一个交换机实例,用于在交换机芯片上执行操作。 create_port() - 创建端口实例 这个指令会在交换机实例中创建一个端口实例...

weixin_42611310的博客 1755

SAI是什么?

SAI是一种更新的用于数字音频传输的接口协议,相比I2S,SAI在通道数、数据位宽、采样率、工作模式以及时钟配置等方面都更加灵活和强大,这也使得SAI现在应用更加广泛。但是SAI比I2S功能更强大,配置更加灵活。I2S:(Inter—IC Sound)总线, 又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统。1.支持更多的数据通道,SAI支持16/32个通道,I2S仅支持2个通道。

qq_31885403的博客 5163

STM32F439VGT6与AD7768的高性能数据采集系统:SAI接口DMA通信深度解析

时钟精度:使用PLLSAI生成精确的16.384MHz主时钟内存优化:CCM RAM + DMA双缓冲实现零等待传输时序控制:TIM硬件同步确保采样精确性信号完整性:阻抗匹配(50Ω) + 等长布线(<5mm差异)实时处理:CMSIS-DSP库加速算法处理工业应用案例:本方案已成功用于电力质量监测系统,实现8通道电压电流同步采集,128kSPS采样率下THD<-110dB,通过IEC 61000-4-30 Class A认证。完整工程地址。

niuTyler的博客 1979

打造你自己的小程序容器 —— 一套能装得下整个未来的跨端技术!

摘要: 本文介绍了一种基于Capacitor框架开发的轻量级“小程序容器”解决方案——LapDrop。通过模拟微信小程序的运行逻辑(动态加载、原生能力调用、沙盒环境),LapDrop允许开发者自主构建跨平台(iOS/Android/Web)的小程序生态。其核心利用Capacitor的插件桥接机制,实现JS与原生功能的无缝调用,并支持浏览器调试与原生环境一致化。优势包括插件化架构、状态隔离、热更新及开放权限控制,适用于企业级模块化应用或开发者工具。未来计划扩展生命周期管理、远程加载等功能,目标成为开源的小程序

CangYuChenAi的博客 979

南京邮电大学电工电子基础B实验六(组合逻辑电路)

南京邮电大学电工电子基础B实验五(组合逻辑电路);电工电子;南京邮电大学;计算机学院;实验报告;电路图;

亦是远方的小地方 1万+

SONiC中的SAI接口使用方法和原理

SONiC是一款开源网络操作系统,SAI(Switch Abstraction Interface)接口是用于与硬件交互的接口。SAI接口定义了硬件平台必须实现的功能,使得软件能够与硬件无缝衔接。 SAI接口使用方法如下: 在应用程序中,通过SAI接口库调用SAI函数。 SAI函数将数据包装成一个请求,然后发送到硬件平台。 硬件平台接收到请求后,处理请求并返回响应。 SAI函数将响应包装成数据包...

weixin_35755562的博客 2645

华为2021年天线工程师笔试题目回忆总结(持续更新)

1. 判定长线和短线 所谓长线是指传输线的几何长度和线上传输电磁波的波长的比值(即电长度)大于或接近于1。反之称为短线。是相对于波长而言的。 1000m的传输线,对于频率为50hz(即波长为6000km)的交流电来说,仍远小于波长,应视为短线。长线和短线的区别还在于:长线为分布参数电路,而短线是集总参数电路。 2. 判定传输线的容性和感性 传输线上的输入阻抗具有以下特点: 1/4波长变换性:感性负载与容性负载变换,开路与短路变换; 1/2波长重复性:相距1/2波长的整数倍的两个点输入阻抗都相等。1/4开路传

ludashi3的博客 9531

eai java实现,月光软件站 - 编程文档 - Java - 建立EAI方式与SAI方式之间的通信

解决JAVA控制VRML场景的一个实际问题侯光敏 (wearebug@etang.com)2002 年 1 月搞过java语言对vrml场景控制的人都知道,目前有两种方式对vrml场景进行控制,那就是EAI方式和SAI方式.EAI的全称是External Authoring Interface ,使用这种控制方式可以在applet中一目了然地输入各种参数来改变场景的内容,控制是非常灵活的.SAI方...

weixin_28985877的博客 222

WPS专业版自带字体

WPS专业版其中一个好处就是自带了部分有版权的字体,就算你安装了没买授权,他也会给你在系统里面安装上这些字体,至于没授权继续用合不合规我不知道。但是带来的实实在在的好处就是有些子他支持的全啊。 /usr/share/fonts/wps-office/FZWBK.TTF: 方正魏碑_GBK,FZWeiBei\-S03:style=Regular /usr/share/fonts/wps-office/FZFSK.TTF: 方正仿宋_GBK,FZFangSong\-Z02:style=Regular /us

chenqioulin的博客 5710

Minio HTTPS证书配置实战:从申请到部署全流程

本文详细介绍了Minio HTTPS证书配置的全流程,从申请到部署,确保对象存储服务的安全性。内容包括证书类型选择、文件处理、服务配置调整及常见问题解决,帮助用户在生产环境中快速实现HTTPS加密传输,提升数据安全。

weixin_42638178的博客 433

VRML与JAVA在网络课件中交互运用分析

虚拟现实建模语言(Virtual Reality Modeling Language 即VRML)和Java语言都是 可执行的代码”技术,通过网络传输的只是一个很小的描述文件(指令性数据集),客户端通过本地的VRML浏览器、JAVA虚拟机交互地访问这些文件并解释执行。将Java与VRML结合,能够很好地实现网络多媒体课件技术:使用VRML进行场景构造,内嵌用Java编写的程序设计实现对象的编程行为

m13286282的专栏 433

C# WPF上位机开发(利用tcp/ip网络访问plc)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 c# wpf如果是用来开发非标上位机的,那么和plc的通信肯定是少不了的。而且,大部分plc都支持modbus协议,所以这个时候如果有一个库可以帮助我们和plc设备进行modbus通信,那就非常方便的。目前NuGet下关于modbus的函数库还是有一些的,比如EasyModbus。

嵌入式-老费,一个分享专业嵌入式知识的blog 2530

java与flex通信

  一、准备:   服务端:JDK1.5 (这个不用介绍了吧?) 服务端IDE:eclipse (它的主页) 客户端:FLEX 3 (Adobe?? Flex?? 3 是用于构建和维护在所有主要浏览器、桌面和操作系统一致地部署的极具表现力的 Web 应用程序的高效率的开放源码框架。) 客户端IDE:Flex Builder 3 (它的官方摘要页) 二、缘分的相遇(建立连接):   既...

hmfcr11l 120

从源码编译CesiumForUnreal

从源码编译CesiumForUnreal插件

专注GIS开发 5644

6、深入解析Microsoft 365核心服务对比与迁移策略

本文深入解析了Microsoft 365的核心服务,包括身份和设备管理、现代设备配置体验、Exchange和SharePoint的迁移策略以及Microsoft Teams的协作功能。同时探讨了迁移过程中需要考虑的安全控制措施,为组织规划和实施云迁移项目提供了全面的指导和建议。

k8s6orchestrator的博客 109

(转)java与flex通信

  (转)java与flex通信 一、准备:服务端:JDK1.5 (这个不用介绍了吧?)服务端IDE:eclipse (它的主页)客户端:FLEX 3 (Adobe® Flex® 3 是用于构建和维护在所有主要浏览器、桌面和操作系统一致地部署的极具表现力的 Web 应用程序的高效率的开放源码框架。)客户端IDE:Flex Builder 3 (它的官方摘要页)二、缘分的

aidetianshi2010的专栏 535

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

flex与JAVA的SOCKET通信

[color=red]来自javaEye上善若水的文章[/color] [url]http://cloud21.iteye.com/blog/607169[/url] 一、准备: 服务端:JDK1.5 (这个不用介绍了吧?) 服务端IDE:eclipse (它的主页) 客户端:FLEX 3 (Adobe&reg; Flex&reg; 3 是用于构建和维护在所有主...

115

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: SimpleXmlEditor1.0
下一篇: Java 集合框架(在线教程)
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值