Arduino通过RXTX联通JAVA实现数字温度计案例

article/2025/11/7 21:03:02

相关项目已经上传到个人博客项目中,供学习使用
代码资源链接如下:https://download.csdn.net/download/qq_41662881/12917318

关键词

  1. OLED显示
  2. RXTX、IIC通信
  3. 数据库连接存储
  4. 实时检测(1s/次)
  5. 数据分析
  6. 任意温湿度上下限报警
  7. Arduino u8glib、DHT库使用

该设计研究数字电子温度计的设计与实现,并采用javaRXTX实时传输数据到数据库中,使得数据分析成为可能,让我们的温湿度数字化更加具体可行。
采用IIC的通信方式将数据显示在OLED数码显示器上,随着技术的发展,一些环境比较恶劣的场合中也能觉得数字温度计的踪迹,在本设计中,主要从功能组合,硬件组合,软件算法等几个方面探讨温度计的设计。数字温度计在现代测温应用方面具有诸多优势,值得进一步学习和研究.

系统概述

系统的结构
本设计使用DHT11传感器作为功能实现的主要数据采集方,通过Arduino作为下位机读取转换数据并显示到OLED屏上,并通过RXTX进行串口通讯,将数据实时采集到上位机电脑数据库中,以实现数据的监测读取存储,使得后面对温湿度数据的数据分析变得方便简单。

总结构:

在这里插入图片描述

DHT11模块:
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便。

DHT11设计原理:
在这里插入图片描述

DHT11由电阻式感湿元件和NTC测阻元件组成进行测量后,传输到微控制单元(MCU)进行转换(被测量转换由OTP存储器写入的固定的电阻值-电量值相应转变程序完成)然后传输到DATA口输出到单片机进行显示。
其中,电阻式感湿元件原理:电阻式湿度传感器是利用湿敏元件的电气特性,随湿度的变化而变化的原理进行湿度测量的传感器,湿敏元件一般是在绝缘物上浸渍吸湿性物质,或通过蒸发、涂覆等工艺之隔一层金属、半导体、高分子薄膜和粉末状颗粒而制作的,在湿敏元件的吸湿和脱湿过程中,水分子分解出的离子H+的传导状态发生变化, 从而使元件的电阻值随湿度而变化。
与环境相对湿度(RH)和环境温度(t)之间,呈现指数函数关系 ,公式可表示为R=Roexpα(Φ-Φ0)-Rtexpβ(t-t0) Ro为起始电阻,α为湿度常数,Rt为起始电阻,β为温度常数。
NTC测阻元件原理:NTC是Negative Temperature Coefficient 的缩写,意思是负的温度系数,泛指负温度系数很大的半导体材料或元器件,所谓NTC热敏电阻器就是负温度系数热敏电阻器。它是以锰、钴、镍和铜等金属氧化物为主要材料,采用陶瓷工艺制造而成的。这些金属氧化物材料都具有半导体性质,因为在导电方式上完全类似锗、硅等半导体材料。温度低时,这些氧化物材料的载流子(电子和孔穴)数目少,所以其电阻值较高;随着温度的升高,载流子数目增加,所以电阻值降低。
热敏电阻的电阻-温度特性可近似地用式1表示。
(式1) R=Ro exp {B(I/T-I/To)}
R : 温度T(K)时的电阻值
Ro : 温度T0(K)时的电阻值
B : B 值
*T(K)= t(ºC)+273.15为官方给出的温度-被测量转换公式。
在这里插入图片描述

接入系统后,因dht11为应变式传感器,故在2脚加入稳定的Vcc电源3~5V并用电阻减小电量输入已达到不干扰DATA数据输入的测量值正确性又可提供稳定电源的前提下将被传输过来的物理量转换为需要显示的数据。

串行接口 (单线双向)
DATA 用于单片机与 DHT11之间的通讯和同步
采用单总线数据格式
一次通讯时间4ms左右
数据分小数部分和整数部分,当前小数部分用于以后扩展,现读出为零。
数据传输格式:
一次完整的数据传输为40bit,高位先出。
数据格式:
8bit湿度整数数据 + 8bit湿度小数数据 + 8bit 温度整数数据 + 8bit温度小数数据 + 8bit校验和

传输方式:

总线空闲状态为高电平
需采集数据时,主机把总线拉低等待DHT11响应(须大于18毫秒,保证DHT11能检测到起始信号。)
DHT11接收到主机的开始信号后,等待主机开始信号结束。
主机发送开始信号结束后,转为输入模式(即拉高电平)延时等待20-40us。
主机读取DHT11的响应信号,若总线处于低电平,表示DHT11开始响应。
DHT11开始响应80us后拉高总线80us
然后开始传输0_1信号
接线口:
在这里插入图片描述

系统硬件设计:
在这里插入图片描述

系统上位机设计:
在这里插入图片描述

系统的功能

通过DHT11采集数据到Arduino后实时显示到OLED屏上以进行实时查看,然后将数据通过RXTX上传到PC端后使用JDBC存储数据到数据库中,以通过Origin软件或者Excel做成数据表可以进行数据分析,进而对直接所处环境温湿度进行改进至自己适合的温度。
开发环境

  1. Arduino:作为下位机负责数据采集显示以及串口上传。
    (1) Arduino.U8glib:用于SSD1306 128x64 OLED屏的字符变量显示以及与屏幕间的IIC通信
    (2) Arduino.DHT:用于DHT11采集数据的通用库
  2. Eclipse(java):作为上位机负责数据收集整理存储入数据库。
    (1) Java.RXTX:RXTX.jar用于串口通讯,将Arduino的数据传输到串口中上传到java程序中。
    (2) Java.JDBC:JDBC.jar用于连接java端数据与数据库端的存储。
  3. MySql:用于存储温湿度采集数据。

传感器技术

DHT11传感器模块:
DHT11设计原理:
在这里插入图片描述

DHT11由电阻式感湿元件和NTC测阻元件组成进行测量后,传输到微控制单元(MCU)进行转换(被测量转换由OTP存储器写入的固定的电阻值-电量值相应转变程序完成)然后传输到DATA口输出到单片机进行显示。
电阻式感湿元件原理:电阻式湿度传感器是利用湿敏元件的电气特性,随湿度的变化而变化的原理进行湿度测量的传感器,湿敏元件一般是在绝缘物上浸渍吸湿性物质,或通过蒸发、涂覆等工艺之隔一层金属、半导体、高分子薄膜和粉末状颗粒而制作的,在湿敏元件的吸湿和脱湿过程中,水分子分解出的离子H+的传导状态发生变化, 从而使元件的电阻值随湿度而变化。
与环境相对湿度(RH)和环境温度(t)之间,呈现指数函数关系 ,公式可表示为R=Roexpα(Φ-Φ0)-Rtexpβ(t-t0) Ro为起始电阻,α为湿度常数,Rt为起始电阻,β为温度常数。
NTC测阻元件原理:NTC是Negative Temperature Coefficient 的缩写,意思是负的温度系数,泛指负温度系数很大的半导体材料或元器件,所谓NTC热敏电阻器就是负温度系数热敏电阻器。它是以锰、钴、镍和铜等金属氧化物为主要材料,采用陶瓷工艺制造而成的。这些金属氧化物材料都具有半导体性质,因为在导电方式上完全类似锗、硅等半导体材料。温度低时,这些氧化物材料的载流子(电子和孔穴)数目少,所以其电阻值较高;随着温度的升高,载流子数目增加,所以电阻值降低。
热敏电阻的电阻-温度特性可近似地用式1表示。
(式1) R=Ro exp {B(I/T-I/To)} R : 温度T(K)时的电阻值 Ro : 温度T0(K)时的电阻值 B : B 值
*T(K)= t(ºC)+273.15为官方给出的温度-被测量转换公式。

接入系统后,因dht11为应变式传感器,故在2脚加入稳定的Vcc电源3~5V并用电阻减小电量输入已达到不干扰DATA数据输入的测量值正确性又可提供稳定电源的前提下将被传输过来的物理量转换为需要显示的数据。
在这里插入图片描述

该段代码用于对采集到的数据进行转换以实现输出数据;
在这里插入图片描述

Arduino端的数据接收,用于分离转换成2个数组后的温度和湿度;最后一句用于设定蜂鸣器报警的上下限。

Arduino有内部的lCD/LED屏幕库u8glib,使用IIC/SPI通信使得数据变量能够显示在屏幕上。
在这里插入图片描述

用于启动IIC通信
在这里插入图片描述

用于点亮屏幕的128x64数码管
在这里插入图片描述

该函数用于数据显示的位置定位以及数据传输
在这里插入图片描述

使用Arduino启动OLED屏时需要do…while…函数方可进行数据显示

其它相关技术

IIC通信: 在这里插入图片描述

RXTX通信:
在这里插入图片描述
为java提供的rxtx数据连接dll文件;
在这里插入图片描述

调用RXTX.jar包用于打开关闭指定串口;

在这里插入图片描述

用于显示所有可打开的串口
在这里插入图片描述

用于打开指定的串口
在这里插入图片描述

用于设置串口通信的信息
在这里插入图片描述

用于进行通信,将串口得到的数据进行转换为可识别的GBK基本显示标准后读取显示于上层软件端。
在这里插入图片描述

用于事件触发监听打开串口
在这里插入图片描述

用于转码显示串口读到的信息并转化成字符串赋值给t显示出来
在这里插入图片描述

用于获取数据采集时候的系统时间并计入数据库中,以达到实时计入效果

JDBC通信:
DBUtil.java用于JDBC编程调用MySql数据库增删改查数据
在这里插入图片描述

用于设定基础的数据库连接信息,调用驱动
在这里插入图片描述

用于查询操作
在这里插入图片描述

用于增删查改操作
在这里插入图片描述

该系统中使用 语句将数据传输入数据库,其中使用 将传输过来的温度湿度
在这里插入图片描述

使用split函数分离成2个数组后分别存放。

硬件实现

在这里插入图片描述

OLED接线:A5SCL
A4SDA
VCC3.3V
GNDReset/GND

DHT11接线:DATD2
GNDGND
VCC3.3V
蜂鸣器接线:SD6
GNDGND
VCC3.3V

Arduino代码实现

#include <dht11.h>
#include <U8glib.h>U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 
//U8GLIB_SSD1306_128X64 u8g(10, 9);
dht11 DHT11;
#define DHT11PIN 2//float temp=0;//温度显示void setup() {
//tempSerial.begin(9600);//Serial.println("begin!");//!pinMode(6,OUTPUT);//oled显示if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {u8g.setColorIndex(255);     // white}else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {u8g.setColorIndex(3);         // max intensity}else if ( u8g.getMode() == U8G_MODE_BW ) {u8g.setColorIndex(1);         // pixel on}else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {u8g.setHiColorByRGB(255,255,255);}}void draw(void) {u8g.setFont(u8g_font_8x13);u8g.setPrintPos(0,20);u8g.print("HUMI(%):");u8g.setPrintPos(73,20);u8g.print((float)DHT11.humidity);u8g.setPrintPos(0,40);u8g.print("TEMP(℃):");u8g.setPrintPos(73,40);u8g.print((float)DHT11.temperature);
}void sound(){for(int i=500;i<600;i++){digitalWrite(6,HIGH);delay(5);}digitalWrite(6,LOW);
}void loop() {//temp//Serial.println("\n");int chk=DHT11.read(DHT11PIN);//Serial.print("Humidity (%): ");Serial.print((float)DHT11.humidity, 2);Serial.print("\t");//Serial.print("Temperature (oC): ");Serial.print((float)DHT11.temperature, 2);if(((float)DHT11.humidity>=94)&&((float)DHT11.temperature>=30)){sound();}//oledu8g.firstPage();  do {draw();} while( u8g.nextPage() );delay(1000); }

JAVA软件代码

//OpenerAndCloser.java
package com.serialPort.writer;import java.util.Enumeration;import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.UnsupportedCommOperationException;/*** 该类实现3个功能* 1.列举出本地所有的串口;* 2.打开所有串口(但是未向串口中写数据);* 3.关闭打开的串口。*/
public class OpenerAndCloser {public static void main(String[] args){//1.获取本地所有的端口并输出其名称://1.1.用于标识端口的变量CommPortIdentifier portIdentifier = null;//1.2.记录所有端口的变量Enumeration<?> allPorts = CommPortIdentifier.getPortIdentifiers();//1.3.输出每一个端口while(allPorts.hasMoreElements()){portIdentifier = (CommPortIdentifier) allPorts.nextElement();System.out.println("串口:" + portIdentifier.getName());}//2.打开COM3和COM21端口//2.1.获取两个端口CommPortIdentifier com3 = null;try {com3 = CommPortIdentifier.getPortIdentifier("COM3");} catch (NoSuchPortException e) {// TODO Auto-generated catch blocke.printStackTrace();}//2.2.打开两个端口,但是什么都没干SerialPort serialCom3 = null;try {//open方法的第1个参数表示串口被打开后的所有者名称,//第2个参数表示如果串口被占用的时候本程序的最长等待时间,以毫秒为单位。serialCom3 = (SerialPort)com3.open("OpenerAndCloser", 1000);} catch (PortInUseException e) {//要打开的端口被占用时抛出该异常e.printStackTrace();}//2.3.设置两个端口的参数try {serialCom3.setSerialPortParams(9600, //波特率SerialPort.DATABITS_8,//数据位数SerialPort.STOPBITS_1,//停止位SerialPort.PARITY_NONE//奇偶位);} catch (UnsupportedCommOperationException e) {e.printStackTrace();}//3.关闭COM3和COM21端口//关闭端口的方法在SerialPort类中serialCom3.close();}
}
//Com3EventListener.java
package com.serialPort.writer;
import java.awt.HeadlessException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TooManyListenersException;import javax.swing.JOptionPane;import db.DBUtil;
import src.a;
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
@SuppressWarnings("unused")
public class Com3EventListener implements SerialPortEventListener {public static String t0;public static String t1;//1.定义变量CommPortIdentifier com3 = null;//未打卡的端口SerialPort serialCom3 = null;//打开的端口InputStream inputStream = null;//输入流//2.构造函数://实现初始化动作:获取串口COM3、打开串口、获取串口输入流对象、为串口添加事件监听对象public Com3EventListener(){try {//获取串口、打开窗串口、获取串口的输入流。com3 = CommPortIdentifier.getPortIdentifier("COM3");serialCom3 = (SerialPort) com3.open("Com3EventListener", 1000);inputStream = serialCom3.getInputStream();//向串口添加事件监听对象。serialCom3.addEventListener(this);//设置当端口有可用数据时触发事件,此设置必不可少。serialCom3.notifyOnDataAvailable(true);} catch (NoSuchPortException e) {e.printStackTrace();} catch (PortInUseException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (TooManyListenersException e) {e.printStackTrace();}}//重写继承的监听器方法@Overridepublic void serialEvent(SerialPortEvent event) {//定义用于缓存读入数据的数组byte[] cache = new byte[1023];//记录已经到达串口COM3且未被读取的数据的字节(Byte)数。int availableBytes = 0;//如果是数据可用的时间发送,则进行数据的读写if(event.getEventType() == SerialPortEvent.DATA_AVAILABLE){try {availableBytes = inputStream.available();while(availableBytes > 0){inputStream.read(cache);String t="";for(int i = 0; i < cache.length && i < availableBytes; i++){//解码并输出数据t=t+String.valueOf((char)cache[i]);t = t.replaceAll("\r|\n", "");//  GUI.txtUser.setText("1");}//System.out.print(t);DBUtil db=new DBUtil();Connection conn=null;try {conn=db.getConnection();} catch (ClassNotFoundException e3) {// TODO 自动生成的 catch 块e3.printStackTrace();} catch (SQLException e3) {// TODO 自动生成的 catch 块e3.printStackTrace();} catch (InstantiationException e3) {// TODO 自动生成的 catch 块e3.printStackTrace();} catch (IllegalAccessException e3) {// TODO 自动生成的 catch 块e3.printStackTrace();}Statement stmt = null;try {stmt = conn.createStatement();} catch (SQLException e2) {// TODO 自动生成的 catch 块e2.printStackTrace();}SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式//*************************储存数据库***************************String [] temp;temp=t.split("\t");t0=temp[0];t1=temp[1];System.out.println(t0);System.out.println(df.format(new Date()));// new Date()为获取当前系统时间String tempsql="insert into t(humi,temp,time) values('"+t0+"','"+t1+"','"+df.format(new Date())+"')";System.out.println("SQL:"+tempsql);int addtest=0;try {addtest=stmt.executeUpdate(tempsql);} catch (SQLException e1) {// TODO 自动生成的 catch 块e1.printStackTrace();} a.timeshow.setText(df.format(new Date()));a.ttext.setText(temp[1]);a.htext.setText(temp[0]);availableBytes = inputStream.available();}System.out.println();} catch (IOException e) {e.printStackTrace();}}}//在main方法中创建类的实例public static void main(String[] args) {new Com3EventListener();}
}

功能使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/eDcHRIo7.shtml

相关文章

Lct系列小结

这个东西欠了很久了(博客也停了很久了) 这篇博文不负责讲解Lct的基础知识&#xff08;太麻烦&#xff09;所以有需要的同学可以看这里 PART 1 我们首先给一个模板 struct Splay{int F,s[2],rev;int val,sum;inline void NewNode(int fa,int x){Ffa; s[0]s[1]rev0;valsumx;…

国内骨干网互联互通格局巨变,中移动将与电信和联通免费对等互联

2月24日工信部发布《关于调整互联网骨干网网间结算政策的通知》&#xff08;工信部信管[2020] 22号&#xff09;&#xff0c;要求中移动与中联通和中电信对等互联&#xff0c;互不结算&#xff1b;四家公益性网络免费互联&#xff1b;降低三大对中国广电、中信的结算费用。 22…

看傲腾配OpenCAS加速联通沃云业务

傲腾&#xff08;Optane&#xff09;是Intel在存储器方面的重量级产品。其采用3D Xpoint存储非易失介质来存储数据。3D Xpoint的一大特点就是时延更加接近SDRAM&#xff0c;而寿命方面大大高于NAND Flash&#xff0c;而容量密度则介于SDRAM和NAND Flash之间。这种特性决定了傲腾…

网红释一刀

释一刀,本名伍永骞,男,布依族。身高1米69,体重:58公斤。毕业于少林寺的一位俗家弟子。 1979年生于贵州。结婚夫人名叫周小艳,是中学的同班同学,比他小两岁半。 2010年,释一刀出差的一个晚上,在夜总会喝酒,巧看见老同学(周,女校花),便一见钟情爱上对方。两人交往一…

拼多多被曝确定五一放假三天,网友:“这也砍一刀?”

眼看着五一马上来临&#xff0c;即将喜提“五天”小长假的消息&#xff0c;让无数打工人欢呼雀跃。 然而&#xff0c;大家的快乐似乎并不相通。 有知情人士在脉脉上爆料&#xff0c;4 月 26 日晚上拼多多内部终于敲定了今年五一的放假时间&#xff0c;然而让员工们感到不尽人…

java 流水_Java之流水号生成器实现

开心一笑 搞笑.png 提出问题 如何使用jAVA生成流水号&#xff0c;同时支持可配置和高并发??? 解决问题 假设你们项目已经整合缓存技术 假如你有一定的Java基础 假如...... 下面的代码实现的是一个支持高并发&#xff0c;可配置&#xff0c;效率高的流水号生成器&#xff0c;…

哈希一刀流——布隆过滤器详解

目录 传统艺能&#x1f60e;背景&#x1f914;概念&#x1f914;误判控制&#x1f60b;具体实现&#x1f60b;插入&#x1f60b;查找&#x1f60b;删除&#x1f60b;优劣&#x1f60b;使用场景&#x1f60b; 传统艺能&#x1f60e; 小编是双非本科大二菜鸟不赘述&#xff0c;欢…

连米哈游都成了第二,这个一刀999的页游大王把老外吃透了。

自从《 原神 》在 2020 年上线之后&#xff0c;米哈游基本就稳坐出海收入第一的王座。 但是&#xff0c;稳坐榜首的米哈游&#xff0c;却在今年 10 月&#xff0c;被突然冒出的三七互娱一脚踢了下来。 没错&#xff0c;就是那个做出了《 大天使之剑 》、《 传奇霸业 》的页游大…

如何产生一个全局唯一的流水号(附demo)

本文介绍如何使用最简单的方法产生一个全局唯一的流水号&#xff0c;支持集群&#xff0c;性能可靠&#xff0c;并且经过实际的应用 唯一流水号的格式为当前系统时间当前服务器编号并发序列号&#xff0c;长度最短可为17位&#xff0c;每毫秒支持生成多个并且支持集群部署 废话…

记小辉人生中的第一刀

本篇是小辉趴在床上写完的博客&#xff0c;讲的是半个月前“肛裂肛瘘混合痔”手术到术后两周的康复过程以及一些注意事项和提示&#xff0c;给读者们的健康提个醒&#xff0c;欢迎转发给身边正在经历痛苦或者犹豫的朋友。 希望大家都身体健康&#xff0c;永远用不上我下面提到的…

砍一刀免费拿营销玩法解说

大家应该都收到拼多多的砍价链接&#xff0c;小来对拼多多这种扰民是推广方式非常反感&#xff0c;但不得不承认&#xff0c;这个营销方式却是拼多多最有效的营销方式之一。 拼多多最新的财报显示&#xff0c;拼多多2020年活跃买家数为7.884亿&#xff0c;首度超越阿里位居全国…

【leetCode:剑指 Offer】06. 从尾到头打印链表

1.题目描述 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 2.算法分析 倒序输出&#xff0c;使用栈Stack的数据结构。 先将链表中的元素入栈&#xff0c;然后遍历栈内元素&#xff0c;将元素加入到数组中。 3.代码实现…

流水

这几天怎么过去的 在纸上画一笔 就这么轻松 没和任何人联系 似乎很忙 总是在上课上课上课 从这个教室到那个教室 从这个实验室到那个实验室 嗜睡得厉害 心里很空 很久没有S的消息 有点冷

R语言--readr包读写数据

文章目录 前言一、发现问题二、分析问题三、解决问题四、读写速度总结吐槽 前言 当你使出了浑身解数&#xff0c;read.csv和read.table还是无法读入数据时&#xff0c;或许可以尝试一下readr包中的read_table&#xff0c;read_csv等函数。尝试一下&#xff01; 我是一个很专一…

R语言入门:读取csv文件及获取统计数值(1)

本次编程尝试使用R语言读取csv文件“filesize.csv”&#xff0c;并根据内容绘制统计图和得出平均数&#xff0c;中位数和方差等简单数据。 csv文件内容1001个数值至少大于1000的小数组成&#xff0c;每行一个&#xff0c;共计1001行 在打开文件之前&#xff0c;我们可能会遇到…

R语言 读取文件

1. R读取txt文件 使用R读取txt文件直接使用read.table()方法进行读取即可&#xff0c;不需要加载额外的包。 read.table("/home/slave/test.txt",headerT,na.strings c("NA"))注意&#xff0c;此处的na.strings c("NA") 的意思是文件中的缺失数…

R从文件中读取数据,输出文件

看了几天的书&#xff0c;终于到这一步了&#xff0c;说实话&#xff0c;用R来做统计&#xff0c;很少有人手动的去输入那些数字&#xff0c;肯定是从别的地方导入的&#xff0c;我们用来处理就可以了&#xff0c;所以到这里才算是真正的入门&#xff0c;前面都是做基础的练手。…

R语言中文件或数据的读写

文章目录 系统数据的读写xlsx文件的读写举例说明具体代码结果如下 csv文件的读写读取csv文件写入csv文件使用readr包读取csv文件使用data.table包读取csv文件 scan函数scan()函数的使用语法参数含义描述实例&#xff1a; 系统数据的读写 save(a,b,file"test.RData")…

掌握R语言文件读取方法

目标 掌握 R语言文件读取方法 学习笔记 utils包内Date Input用法base包内readLines用法stringi包内stri_read_linesxlsx包内Date Input用法readr包内 Read a delimited file 用法 1.utils包内Date Input用法 以read.table为例。 read.table参数详细说明见http://www.360doc…