java操作串口(java如何向串口发送指令)

2024-04-18 16:40:09 8

java操作串口(java如何向串口发送指令)

本文目录

java如何向串口发送指令

需要一个包 comm.jar\x0d\x0a需要一个配置文件 javax.comm.properties (工程根目录)\x0d\x0a(或者放在JDK里)\x0d\x0a// 取得端口句柄\x0d\x0aCommPortIdentifier id = CommPortIdentifier.getPortIdentifier(portName);\x0d\x0aport = (SerialPort) id .open("SerialDemo", 30000);\x0d\x0aport .setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);\x0d\x0a \x0d\x0aport .notifyOnDataAvailable(true);\x0d\x0aport .notifyOnBreakInterrupt(true);\x0d\x0aport .enableReceiveTimeout(delayTime);\x0d\x0a\x0d\x0a读取之类的自己写就行了,(port .getInputStream()),完事之后别忘了关掉端口,不然下次就不能用了,只能重启系统 \x0d\x0a\x0d\x0a配置文件里就一行:\x0d\x0aDriver=com.sun.comm.Win32Driver \x0d\x0a\x0d\x0a----------------------------------\x0d\x0a你设个断点单步调试看一下原因,那个SerialBean是你自己写的,谁也不知道里面整啥了,单步调试就知道哪里错误。\x0d\x0a抛出异常了Exception in thread "main" java.lang.NullPointerException\x0d\x0a at serial.SerialBean.WritePort(SerialBean.java:114)\x0d\x0a从这里看,是在SerialBean.java的114行(函数WritePort)的一个东西,它的值是null,所以报错了

编程技巧:Java串口通信简介

  嵌入式系统或传感器网络的很多应用和测试都需要通过PC机与嵌入式设备或传感器节点进行通信 其中 最常用的接口就是RS 串口和并口(鉴于USB接口的复杂性以及不需要很大的数据传输量 USB接口用在这里还是显得过于奢侈 况且目前除了SUN有一个支持USB的包之外 我还没有看到其他直接支持USB的Java类库) SUN的CommAPI分别提供了对常用的RS 串行端口和IEEE 并行端口通讯的支持 RS C(又称EIA RS C 以下简称RS )是在 年由美国电子工业协会(EIA)联合贝尔系统 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准 RS 是一个全双工的通讯协议 它可以同时进行数据接收和发送的工作

   常见的Java串口包

  目前 常见的Java串口包有SUN在 年发布的串口通信API m jar(Windows下) m jar(Linux/Solaris);IBM的串口通信API以及一个开源的实现 鉴于在Windows下SUN的API比较常用以及IBM的实现和SUN的在API层面都是一样的 那个开源的实现又不像两家大厂的产品那样让人放心 这里就只介绍SUN的串口通信API在Windows平台下的使用

   串口包的安装(Windows下)

  到SUN的网站下载javam win zip 包含的东西如下所示

  按照其使用说明(l)的说法 要想使用串口包进行串口通信 除了设置好环境变量之外 还要将win dll复制到 \bin目录下;将m jar复制到 \lib;把m properties也同样拷贝到 \lib目录下 然而在真正运行使用串口包的时候 仅作这些是不够的 因为通常当运行 java MyApp 的时候 是由JRE下的虚拟机启动MyApp的 而我们只复制上述文件到JDK相应目录下 所以应用程序将会提示找不到串口 解决这个问题的方法很简单 我们只须将上面提到的文件放到JRE相应的目录下就可以了

  值得注意的是 在网络应用程序中使用串口API的时候 还会遇到其他更复杂问题 有兴趣的话 你可以查看CSDN社区中 关于网页上Applet用javam 读取客户端串口的问题 的帖子

   串口API概览

   m CommPort

  这是用于描述一个被底层系统支持的端口的抽象类 它包含一些高层的IO控制方法 这些方法对于所有不同的通讯端口来说是通用的 SerialPort 和ParallelPort都是它的子类 前者用于控制串行端口而后者用于控这并口 二者对于各自底层的物理端口都有不同的控制方法 这里我们只关心SerialPort

   m CommPortIdentifier

  这个类主要用于对串口进行管理和设置 是对串口进行访问控制的核心类 主要包括以下方法

  l 确定是否有可用的通信端口

  l 为IO操作打开通信端口

  l 决定端口的所有权

  l 处理端口所有权的争用

  l 管理端口所有权变化引发的事件(Event)

   m SerialPort

  这个类用于描述一个RS 串行通信端口的底层接口 它定义了串口通信所需的最小功能集 通过它 用户可以直接对串口进行读 写及设置工作

   串口API实例

  大段的文字怎么也不如一个小例子来的清晰 下面我们就一起看一下串口包自带的例子 SerialDemo中的一小段代码来加深对串口API核心类的使用方法的认识

   列举出本机所有可用串口

        void listPortChoices() {   CommPortIdentifier portId;   Enumeration en = CommPortIdentifier getPortIdentifiers();   // iterate through the ports   while (en hasMoreElements()) {   portId = (CommPortIdentifier) en nextElement();   if (portId getPortType() == CommPortIdentifier PORT_SERIAL) {   System out println(portId getName());   }   }   portChoice select(parameters getPortName());   }

  以上代码可以列举出当前系统所有可用的串口名称 我的机器上输出的结果是 和

   串口参数的配置

  串口一般有如下参数可以在该串口打开以前配置进行配置

  包括波特率 输入/输出流控制 数据位数 停止位和齐偶校验

     SerialPort sPort;   try {   sPort setSerialPortParams(BaudRate Databits Stopbits Parity);   //设置输入/输出控制流   sPort setFlowControlMode(FlowControlIn | FlowControlOut);   } catch (UnsupportedCommOperationException e) {}

   串口的读写

  对串口读写之前需要先打开一个串口

        CommPortIdentifier portId = CommPortIdentifier getPortIdentifier(PortName);   try {   SerialPort sPort = (SerialPort) portId open( 串口所有者名称  超时等待时间);   } catch (PortInUseException e) {//如果端口被占用就抛出这个异常   throw new SerialConnectionException(e getMessage());   }   //用于对串口写数据   OutputStream os = new BufferedOutputStream(sPort getOutputStream());   os write(int data);   //用于从串口读数据   InputStream is = new BufferedInputStream(sPort getInputStream());   int receivedData = is read();

  读出来的是int型 你可以把它转换成需要的其他类型

  这里要注意的是 由于Java语言没有无符号类型 即所有的类型都是带符号的 在由byte到int的时候应该尤其注意 因为如果byte的最高位是 则转成int类型时将用 来占位 这样 原本是 的byte类型的数变成int型就成了 这是很严重的问题 应该注意避免

   串口通信的通用模式及其问题

  终于唠叨完我最讨厌的基础知识了 下面开始我们本次的重点 串口应用的研究 由于向串口写数据很简单 所以这里我们只关注于从串口读数据的情况 通常 串口通信应用程序有两种模式 一种是实现SerialPortEventListener接口 监听各种串口事件并作相应处理;另一种就是建立一个独立的接收线程专门负责数据的接收 由于这两种方法在某些情况下存在很严重的问题(至于什么问题这里先卖个关子J) 所以我的实现是采用第三种方法来解决这个问题

   事件监听模型

  现在我们来看看事件监听模型是如何运作的

  

  l 首先需要在你的端口控制类(例如SManager)加上 implements SerialPortEventListener

  l 在初始化时加入如下代码

        try {   SerialPort sPort addEventListener(SManager);   } catch (TooManyListenersException e) {   sPort close();   throw new SerialConnectionException( too many listeners added );   }   sPort notifyOnDataAvailable(true);

  l 覆写public void serialEvent(SerialPortEvent e)方法 在其中对如下事件进行判断

  BI 通讯中断

  CD 载波检测

  CTS 清除发送

  DATA_AVAILABLE 有数据到达

  DSR 数据设备准备好

  FE 帧错误

  OE 溢位错误

  OUTPUT_BUFFER_EMPTY 输出缓冲区已清空

  PE 奇偶校验错

  RI  振铃指示

  一般最常用的就是DATA_AVAILABLE 串口有数据到达事件 也就是说当串口有数据到达时 你可以在serialEvent中接收并处理所收到的数据 然而在我的实践中 遇到了一个十分严重的问题

  首先描述一下我的实验 我的应用程序需要接收传感器节点从串口发回的查询数据 并将结果以图标的形式显示出来 串口设定的波特率是 川口每隔 毫秒返回一组数据(大约是 字节左右) 周期(即持续时间)为 秒 实测的时候在一个周期内应该返回 多个字节 而用事件监听模型我最多只能收到不到 字节 不知道这些字节都跑哪里去了 也不清楚到底丢失的是那部分数据 值得注意的是 这是我将serialEvent()中所有处理代码都注掉 只剩下打印代码所得的结果 数据丢失的如此严重是我所不能忍受的 于是我决定采用其他方法

   串口读数据的线程模型

  这个模型顾名思义 就是将接收数据的操作写成一个线程的形式:

         public void startReadingDataThread() {   Thread readDataProcess = new Thread(new Runnable() {   public void run() {   while (newData !=  ) {   try {   newData = is read();   System out println(newData);   //其他的处理过程   ………   } catch (IOException ex) {   System err println(ex);   return;   }   }   readDataProcess start();   }

  在我的应用程序中 我将收到的数据打包放到一个缓存中 然后启动另一个线程从缓存中获取并处理数据 两个线程以生产者—消费者模式协同工作 数据的流向如下图所示

  这样 我就圆满解决了丢数据问题 然而 没高兴多久我就又发现了一个同样严重的问题 虽然这回不再丢数据了 可是原本一个周期( 秒)之后 传感器节电已经停止传送数据了 但我的串口线程依然在努力的执行读串口操作 在控制台也可以看见收到的数据仍在不断的打印 原来 由于传感器节点发送的数据过快 而我的接收线程处理不过来 所以InputStream就先把已到达却还没处理的字节缓存起来 于是就导致了明明传感器节点已经不再发数据了 而控制台却还能看见数据不断打印这一奇怪的现象 唯一值得庆幸的是最后收到数据确实是 左右字节 没出现丢失现象 然而当处理完最后一个数据的时候已经快 分半钟了 这个时间远远大于节点运行周期 这一延迟对于一个实时的显示系统来说简直是灾难!

  后来我想 是不是由于两个线程之间的同步和通信导致了数据接收缓慢呢?于是我在接收线程的代码中去掉了所有处理代码 仅保留打印收到数据的语句 结果依然如故 看来并不是线程间的通信阻碍了数据的接收速度 而是用线程模型导致了对于发送端数据发送速率过快的情况下的数据接收延迟 这里申明一点 就是对于数据发送速率不是如此快的情况下前面者两种模型应该还是好用的 只是特殊情况还是应该特殊处理

   第三种方法

  痛苦了许久(Boss天天催我L)之后 偶然的机会 我听说TinyOS中(又是开源的)有一部分是和我的应用程序类似的串口通信部分 于是我下载了它的 x版的Java代码部分 参考了它的处理方法 解决问题的方法说穿了其实很简单 就是从根源入手 根源不就是接收线程导致的吗 那好 我就干脆取消接收线程和作为中介的共享缓存 而直接在处理线程中调用串口读数据的方法来解决问题(什么 为什么不把处理线程也一并取消? 都取消应用程序界面不就锁死了吗?所以必须保留)于是程序变成了这样

  

   public byte);   }   }   return msgPack;   }   }

  在处理线程中调用这个方法返回所需要的数据序列并处理之 这样不但没有丢失数据的现象行出现 也没有数据接收延迟了 这里唯一需要注意的就是当串口停止发送数据或没有数据的时候is read()一直都返回 如果一旦在开始接收数据的时候发现 就不要理它 继续接收 直到收到真正的数据为止

   结束语

lishixinzhi/Article/program/Java/hx/201311/26605

求VBS JAVA 等简单易懂的操作串口(com口)的代码,

Comm.Output=字符串或byte如果是可见字符,则可以直接输出字符串,如Comm.Output="hello"不然得用byte(数组),如Comm.CommPort = 3 ’...使用Com3口Comm.Settings = "57600,n,8,1" ’对串口通讯的相关参数。包括串口通讯的比特率,奇偶校验,数据位长度、停止位等。其默认值 是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校验,8位数据位,1个停止位。Comm.OutBufferSize = 1024 If Comm.PortOpen = False Then Comm.PortOpen = True ’...打开串口End If Comm.OutBufferCount = 0 ’...清空输出寄存器 Dim buffer(6) as Bytebuffer(0) = 255buffer(1) = 1buffer(2) = 0buffer(3) = 0buffer(4) = 0buffer(5) = 0buffer(6) = 1Comm.Output = bufferComm.PortOpen = False 上面确实是VB的代码。在VBS中,没有类型,所以声明数组与初始化可能为:Dim buffer(6)buffer(0) = CByte(255)...我没试过,不一定正确哟。

如何使用Java实现两台PC机之间的串口通信

//SocketClientimport java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;import java.util.Scanner;import org.apache.log4j.Logger;import com.sitinspring.server.ResponseThread;/** * Socket客户端 * @author: sitinspring(junglesong@gmail.com) * @date: 2007-11-16 */public class SocketClient{ private static Logger logger = Logger.getLogger(ResponseThread.class); public static void main(String args){ try { Socket socket=new Socket("127.0.0.1",2009); logger.info("客户端向服务器发起请求."); try { InputStream inStream = socket.getInputStream(); OutputStream outStream = socket.getOutputStream(); Scanner in = new Scanner(inStream); PrintWriter out = new PrintWriter(outStream); out.println("地震高岗 一派溪山千古秀"); out.flush(); while (in.hasNextLine()) { String line = in.nextLine(); logger.info("客户端获得响应文字="+ line); } } finally { socket.close(); } } catch (IOException ex) { ex.printStackTrace(); } }}//Memberimport java.util.Comparator;public class Member implements Comparable { private String name; private int age; public Member(String name, int age) { this.name = name; this.age = age; } public int compareTo(Object obj) { Member another = (Member) obj; //return this.name.compareTo(another.name); return this.age-another.age; } public String toString(){ return "Member name="+name+" age="+age; }}//Mainimport java.util.Arrays;import java.util.List;public class Main{ public static void main(String args){ String arr={"Andy","Bill","Cindy","Dell"}; List《String》 ls=Arrays.asList(arr); for(String str:ls){ System.out.println(str); } /*List《String》 ls=new ArrayList《String》(); ls.add("Felex"); ls.add("Gates"); ls.add("Andy"); ls.add("Bill"); ls.add("Cindy"); ls.add("Dell"); Object arr=ls.toArray(); for(Object obj:arr){ System.out.println((Object)obj); }*/ /*Collections.sort(ls); for(Member member:ls){ System.out.println(member); }*/ /*Member member=new Member("Edin",28); ls.remove(member); ls.remove(2); ls.clear(); List ls2=new ArrayList();*/ /*for(Member member:ls){ // member }*/ /*for(int i=0;i《ls.size();i++){ Member member=ls.get(i); }*/ /*for(Iterator it=ls.iterator();it.hasNext();){ Member member=(Member)it.next(); } List《Member》 ls2=new ArrayList《Member》(); ls2.add(new Member("Felex",21)); ls2.add(new Member("Gates",23)); ls.addAll(ls2); ls2.*/ /*List ls3=null; System.out.println(ls3.isEmpty());*/ /*List ls3=null; System.out.println(ls2.isEmpty());*/ /*ls. ls.indexOf(o) ls.contains(o)*/ //ls2.add(1); }}//ResponseThread 这个是server的先启动client(服务器)再启动它。上面三个类是client放在一个文件夹中import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;import org.apache.log4j.Logger;/** * 响应线程,建立ServerSocket响应客户端Socket请求 * @author: sitinspring(junglesong@gmail.com) * @date: 2007-11-16 */public class ResponseThread implements Runnable { private static Logger logger = Logger.getLogger(ResponseThread.class); // 用于与客户端通信的Socket private Socket incomingSocket; public ResponseThread(Socket incomingSocket) { this.incomingSocket = incomingSocket; } public void run() { try { try { // 输入流 InputStream inStream = incomingSocket.getInputStream(); // 输出流 OutputStream outStream = incomingSocket.getOutputStream(); Scanner in = new Scanner(inStream); PrintWriter out = new PrintWriter(outStream,true); while (in.hasNextLine()) { String line = in.nextLine(); logger.info("从客户端获得文字:"+line); String responseLine=line+" 门朝大海 三河合水万年流"; out.println(responseLine); logger.info("向客户端送出文字:"+responseLine); } } finally { incomingSocket.close(); } } catch (IOException ex) { ex.printStackTrace(); } } public static void main(String args) { try { ServerSocket socket=new ServerSocket(2009); logger.info("开始监听"); while(true){ Socket incomingSocket=socket.accept(); logger.info("获得来自"+incomingSocket.getInetAddress()+"的请求."); ResponseThread responseThread=new ResponseThread(incomingSocket); Thread thread=new Thread(responseThread); thread.start(); } } catch (IOException ex) { ex.printStackTrace(); } }}

java操作串口(java如何向串口发送指令)

本文编辑:admin

更多文章:


jquery设置select选中(jquery怎么根据value来动态选中select下的option)

jquery设置select选中(jquery怎么根据value来动态选中select下的option)

各位老铁们,大家好,今天由我来为大家分享jquery设置select选中,以及jquery怎么根据value来动态选中select下的option的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大

2024年7月13日 01:01

fished out(fish out的用法fish out是不是捕捞的意思每天捕捞鱼能用fish out这短语吗怎么用英文说)

fished out(fish out的用法fish out是不是捕捞的意思每天捕捞鱼能用fish out这短语吗怎么用英文说)

大家好,今天小编来为大家解答以下的问题,关于fished out,fish out的用法fish out是不是捕捞的意思每天捕捞鱼能用fish out这短语吗怎么用英文说这个很多人还不知道,现在让我们一起来看看吧!本文目录fish out的

2024年8月27日 17:05

nginx负载均衡数据库(nginx负载均衡怎么访问数据库)

nginx负载均衡数据库(nginx负载均衡怎么访问数据库)

本文目录nginx负载均衡怎么访问数据库nginx如何实现负载均衡、限流、缓存、黑白名单和灰度发布用nginx负载均衡,提高并发Nginx支持TCP代理和负载均衡-stream模块nginx负载均衡怎么访问数据库  nginx 是一个轻量级

2024年7月22日 02:34

二选一抽签器在线(文殊灵签在线抽签)

二选一抽签器在线(文殊灵签在线抽签)

大家好,如果您还对二选一抽签器在线不太了解,没有关系,今天就由本站为大家分享二选一抽签器在线的知识,包括文殊灵签在线抽签的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录文殊灵签在线抽签灵签在线抽签解签,观音灵签在线

2024年7月27日 14:50

用于字符串比较的库函数是(函数sstrcmp()的功能是对两个字符串进行比较)

用于字符串比较的库函数是(函数sstrcmp()的功能是对两个字符串进行比较)

本文目录函数sstrcmp()的功能是对两个字符串进行比较C语言若干题目求解if(!(strcmp(del_num,stu[i].num)))c语言方面的问题2编写一个自己的库函数strcmp(),用来实现实现两个字符串的比较函数sstrc

2024年7月24日 07:56

fancying(crazy、fancy是什么意思)

fancying(crazy、fancy是什么意思)

本文目录crazy、fancy是什么意思fancy 的ing形式是fancying 吗i fancy you是什么意思fancy用法是什么crazy、fancy是什么意思friend,请查收,望采纳,THx!!crazya.1. 疯狂的;

2024年4月6日 03:00

“按钮”的拼音怎么写?按钮和按钮哪个正确

“按钮”的拼音怎么写?按钮和按钮哪个正确

大家好,按钮按钮相信很多的网友都不是很明白,包括“按钮”的拼音怎么写也是一样,不过没有关系,接下来就来为大家分享关于按钮按钮和“按钮”的拼音怎么写的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录“按钮”的拼音怎么

2024年8月18日 19:55

teamviewer(teamviewer和teamviewer host有什么区别求指教)

teamviewer(teamviewer和teamviewer host有什么区别求指教)

大家好,今天小编来为大家解答以下的问题,关于teamviewer,teamviewer和teamviewer host有什么区别求指教这个很多人还不知道,现在让我们一起来看看吧!本文目录teamviewer和teamviewer host有

2024年7月23日 09:33

简述for与foreach语句的区别(for in,for of, for,forEach,map的区别)

简述for与foreach语句的区别(for in,for of, for,forEach,map的区别)

本文目录for in,for of, for,forEach,map的区别php foreach和for的区别for in,for of, for,forEach,map的区别 最近一直有在面试,各种准备,博客,慕课网都成了常客,看了那么久

2024年7月12日 09:57

nginx停止和启动命令(重启nginx服务器用哪个指令比较好)

nginx停止和启动命令(重启nginx服务器用哪个指令比较好)

本文目录重启nginx服务器用哪个指令比较好nginx 问一下nginx常用命令重启nginx服务器用哪个指令比较好nginx -s reload :修改配置后重新加载生效nginx -s reopen :重新打开日志文件nginx -

2024年6月13日 12:58

潍坊少儿编程(潍坊瓦力工厂少儿编程专业吗价格怎么样!)

潍坊少儿编程(潍坊瓦力工厂少儿编程专业吗价格怎么样!)

本文目录潍坊瓦力工厂少儿编程专业吗价格怎么样!潍坊童程童美怎么样潍坊编程培训班哪家好潍坊少儿编程国际比赛获奖容易吗对孩子升学有帮助吗潍坊瓦力工厂少儿编程专业吗价格怎么样!潍坊瓦力工厂少儿编程还可以。学习少儿编程推荐选择童程童美童程童美少儿编

2024年7月24日 01:43

部署图显示代码本身的结构(用图形画出一个web程序部署在tomcat的基本目录结构)

部署图显示代码本身的结构(用图形画出一个web程序部署在tomcat的基本目录结构)

本文目录用图形画出一个web程序部署在tomcat的基本目录结构统一建模语言UML中用来反映代码的物理结构的是如何在gerrit 网站中 显示代码的目录结构组件图的创建用于显示运行的处理结点以及居于其上的构件、进程和对象的配置的图是 ( )

2024年3月15日 05:50

字符串数组内容交换(C语言,怎么将字符数组值互换)

字符串数组内容交换(C语言,怎么将字符数组值互换)

其实字符串数组内容交换的问题并不复杂,但是又很多的朋友都不太了解C语言,怎么将字符数组值互换,因此呢,今天小编就来为大家分享字符串数组内容交换的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录C语言,怎么将字符数组

2024年7月13日 07:10

conservative party(conservative什么意思)

conservative party(conservative什么意思)

本文目录conservative什么意思The Conservative Party is one of the ________ parties in Britainconservative什么意思conservative英 n.保守的人

2024年5月3日 09:53

java中相等怎么表示(java怎么比较两个字符串是否相等)

java中相等怎么表示(java怎么比较两个字符串是否相等)

本文目录java怎么比较两个字符串是否相等Java判断一个对象与其他多个是否相等有无简洁表达,如:if(a.equals(b)||a.equals(c)){}.java中用于两个数相等比较的运算符是java中如何判断两个变量相等java中怎

2024年6月15日 03:08

combox(combox绑定数据)

combox(combox绑定数据)

本文目录combox绑定数据C#中如何将combox中的下拉项和一个枚举中的各项进行绑定combox 的数据源为datatable 时,如何显示数据combox是什么vb如何链接comboxc#中,combox 怎么设置为不可编辑除了将dr

2024年7月3日 08:25

setinterval越来越快(setinterval速度重叠)

setinterval越来越快(setinterval速度重叠)

本文目录setinterval速度重叠鼠标移入时候clearInterval(),后,鼠标移出时候setInterval(),为什么越来越快在iframe中用setInterval定时刷新遇到的问题html图片无缝滚动鼠标在图片上移动时速度

2024年7月16日 17:48

今日全世界疫情排名一览表(世界大学排名一览表最新)

今日全世界疫情排名一览表(世界大学排名一览表最新)

本文目录世界大学排名一览表最新三年疫情猜一数字隆海集团世界排名多少中国十大名牌手表排名榜世界经济运行特点与变化的是全球十大军事武器排名世界名表排名前十名泰来大学世界排名上海的大学排名一览表世界大学排名一览表最新世界大学排名一览表最新介绍如下

2024年7月3日 10:13

数控css和rpm什么意思(数控车床操作键盘上26个字母,分别是什么意思啊)

数控css和rpm什么意思(数控车床操作键盘上26个字母,分别是什么意思啊)

大家好,今天小编来为大家解答以下的问题,关于数控css和rpm什么意思,数控车床操作键盘上26个字母,分别是什么意思啊这个很多人还不知道,现在让我们一起来看看吧!本文目录数控车床操作键盘上26个字母,分别是什么意思啊数控中工艺里的主轴的转数

2024年7月23日 12:25

json格式化工具有哪些(有哪些方法可以将JSON格式的数据集转化为EXCEL格式)

json格式化工具有哪些(有哪些方法可以将JSON格式的数据集转化为EXCEL格式)

本文目录有哪些方法可以将JSON格式的数据集转化为EXCEL格式bi报表软件有啥推荐的吗yaml,json,ini这三种格式用来做配置文件,优缺点各在哪里你极力推荐的Chrome扩展有哪些大家一般用什么工具测试HTTP和json接口有哪些方

2024年7月18日 04:18

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索