Nodejs 第六十三章(串口技术)

串口介绍

串口技术是一种用于在计算机和外部设备之间进行数据传输的通信技术。它通过串行传输方式将数据逐位地发送和接收。

常见的串口设备有,扫描仪,打印机,传感器,控制器,采集器,电子秤等

SerialPort

SerialPort 是一个流行的 Node.js 模块,用于在计算机中通过串口与外部设备进行通信。它提供了一组功能强大的 API,用于打开、读取、写入和关闭串口连接,并支持多种操作系统和串口设备。SerialPort官网

SerialPort 模块的主要功能包括:

  1. 打开串口连接:使用 SerialPort 模块,可以轻松打开串口连接,并指定串口名称、波特率、数据位、停止位、校验位等参数。
  2. 读取和写入数据:通过 SerialPort 模块,可以从串口读取数据流,并将数据流写入串口。可以使用事件处理程序或回调函数来处理读取和写入操作。
  3. 配置串口参数:SerialPort 支持配置串口的各种参数,如波特率、数据位、停止位、校验位等。可以根据需求进行定制。
  4. 控制流控制:SerialPort 允许在串口通信中应用硬件流控制或软件流控制,以控制数据的传输速率和流程。
  5. 事件处理:SerialPort 模块可以监听串口连接的各种事件,如打开、关闭、错误等,以便及时处理和响应。

案例跟单片机通讯

这里我使用51单片机

image.png

需要安装的软件

  1. Keil uVision5 编写单片机代码
  2. stcai-isp 烧录单片机程序
单片机串口通讯编写
#include <REGX51.H>
#include <STDIO.h>
sbit LED = P1^0; //
void UART_Init() {
  SCON = 0x50; //工作方式
  PCON = 0x00; //32分频
  TMOD = 0x20; //计数器工作方式
  TH1 = 0xFD;
  TL1 = 0xFD;
  ES = 1; //接受中断
  EA = 1; //打开总中断
  TR1 = 1; //打开计数器
}
void main ()
{
  UART_Init(); //调用初始化函数
	while(1);
}

void uart()interrupt 4 
{
 unsigned char date;
	date = SBUF; //接受数据
	if(date == '1'){
	   LED = 0; //开灯
	}else if(date == '0'){
	   LED = 1; //关灯
	 }
	RI = 0;
}
烧录至单片机
{54CABAED-23FA-4b91-AF4D-41B6D71FE91B}.png
nodejs端编写

安装 serialport

npm install serialport

代码编写

import { SerialPort } from "serialport";

const serialPort = new SerialPort({
    path: 'COM4', //单片机串口
    baudRate: 9600 //波特率
})

serialPort.on('data',()=>{
    console.log('data') //监听单片机的消息
})
let flag = 1
setInterval(()=>{
    serialPort.write(flag + '') //跟单片机进行通讯 传值
    flag = Number(!flag)
    console.log(flag == 0 ? '开': '关') //进行开关的切换
},2000)

视频教程请点击

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/532717.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES6 关于Class类的继承 extends(2024-04-10)

1、简介 类Class 可以通过extends关键字实现继承&#xff0c;让子类继承父类的属性和方法。extends 的写法比 ES5 的原型链继承&#xff0c;要清晰和方便很多。 class Foo {constructor(x, y) {this.x x;this.y y;console.log(父类构造函数)}toString() {return ( this.x …

MyBatis 等类似的 XML 映射文件中,当传入的参数为空字符串时,<if> 标签可能会导致 SQL 语句中的条件判断出现意外结果。

问题 传入的参数为空字符串&#xff0c;但还是根据参数查询了。 原因 在 XML 中使用 标签进行条件判断时&#xff0c;需要明确理解其行为。在 MyBatis 等类似的 XML 映射文件中&#xff0c; 标签通常用于动态拼接 SQL 语句的条件部分。当传入的参数 riskLevel 为空字符串时…

rebase和merge的区别

合并分支用rebase还是merge&#xff1f; 实际开发工作的时候&#xff0c;我们都是在自己的分支开发&#xff0c;然后将自己的分合并到主分支&#xff0c;那合并分支用2种操作&#xff0c;这2种操作有什么区别呢&#xff1f; git上新建一个项目&#xff0c;默认是有master分支…

如何在 YouTube、Medium、Twitter 和 Linkedin 上使用 ChatGPT 赚钱

人工智能SEO&#xff1a;未来内容优化的革命 介绍 在当今的数字时代&#xff0c;利用 ChatGPT 等人工智能工具已经成为在线内容创建和货币化领域的游戏规则改变者。 本指南探讨了如何在 YouTube、Medium、Twitter 和 Linkedin 等各种平台上有效使用 ChatGPT&#xff0c;不仅可以…

猫咪可以每天吃冻干吗?2024最全攻略这几款低调有实力

冻干猫粮近年来逐渐受到养猫人的青睐&#xff0c;其高品质的特性赢得了广大猫主人的认可。对于像我这样的养猫达人来说&#xff0c;早已尝试并认可了冻干喂养。但对于新手来说&#xff0c;他们可能会感到困惑&#xff1a;冻干到底是什么&#xff1f;猫咪可以每天吃冻干吗&#…

Canal的使用场景!!!

1、保持redis和mysql连接的一致性&#xff1a;通常使用延迟双删功能&#xff08;具有弊端&#xff09; 解决方案&#xff1a;可以使用canal监听数据库的变化&#xff08;删改&#xff09;&#xff0c;一旦出现此类操作&#xff0c;立即删除redis中的对应数据&#xff0c;直至下…

【java工具-灵活拉取数据库表结构和数据】

需求&#xff1a; 假设我们现在有一个需求&#xff0c;需要快速拉取数据库的某些表建表语句&#xff0c;和数据&#xff0c;平时做备份之类&#xff1b; 我这边自己写了个工具&#xff0c;不多废话&#xff0c;也不整虚的&#xff0c; 直接看代码&#xff1a; package com.…

Elasticsearch8.x 设置密码

文章目录 一、环境说明二、使用elasticsearch-reset-password工具修改1、elasticsearch-reset-password工具位置2、设置密码 一、环境说明 elasticsearch版本&#xff1a;8.13.0 系统版本&#xff1a;Ubuntu 18.04.6 二、使用elasticsearch-reset-password工具修改 1、elast…

【汇编语言实战】求三个已知数最大值

C语言描述该程序流程&#xff1a; #include <stdio.h> int main() {int a10,b20,c15;//scanf("%d %d",&a,&b);if(a>b){if(a>c){printf("%d",c);}else{printf("%d",a);}}else{if(b>c){printf("%d",b);}else{pr…

Pinctrl子系统、GPIO子系统概念

Pinctrl概念&#xff1a; 无论是哪种芯片&#xff0c;都有类似图 16.1 的结构&#xff1a; 要想让 pinA 、 B 用于 GPIO &#xff0c;需要设置 IOMUX 让它们连接到 GPIO 模块&#xff1b; 要想让 pinA 、 B 用于 I2C &#xff0c;需要设置 IOMUX 让它们连接到 …

Go第三方框架--ants协程池框架

1. 背景介绍 1.1 goroutine ants是站在巨人的肩膀上开发出来的&#xff0c;这个巨人是goroutine&#xff0c;这是连小学生都知道的事儿&#xff0c;那么为什么不继续使用goroutine(以下简称go协程)呢。这是个思考题&#xff0c;希望讲完本文大家可以有个答案。 go协程只涉及用…

python中使用print方法打印时显示颜色

使用说明 在编程中&#xff0c;使用颜色来区分不同类型的输出或突出显示关键信息是一种常见的做法&#xff0c;特别是在调试和日志记录过程中。以下是一些使用颜色输出的常见场景和用途&#xff1a; 调试信息&#xff1a;在调试代码时&#xff0c;可以使用不同颜色来区分不同级…

CSDN 通过博客关注了你

CSDN 通过博客关注了你 前言通过“博文XXX”和“博客”的区别 前言 最近新增粉丝里发现&#xff0c;粉丝来源有不同的方式&#xff1a; 通过博文XXX关注了你 通过你的主页关注了你 通过用户推荐关注了你 通过博客关注了你 通过“博文XXX”和“博客”的区别 通过博文XXX和…

序列化、反序列化:将对象以字节流的方式,进行写入或读取

序列化&#xff1a;将指定对象&#xff0c;以"字节流"的方式写入一个文件或网络中。 反序列化&#xff1a;从一个文件或网络中&#xff0c;以"字节流"的方式读取到对象。 package com.ztt.Demo01;import java.io.FileNotFoundException; import java.io.Fi…

LeetCode-2009. 使数组连续的最少操作数【数组 哈希表 二分查找 滑动窗口】

LeetCode-2009. 使数组连续的最少操作数【数组 哈希表 二分查找 滑动窗口】 题目描述&#xff1a;解题思路一&#xff1a;正难则反滑动窗口解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给你一个整数数组 nums 。每一次操作中&#xff0c;你可以将 n…

rabbitmq延迟队列的使用

rabbitmq延迟队列的使用 1、场景&#xff1a; 1.定时发布文章 2.秒杀之后&#xff0c;给30分钟时间进行支付&#xff0c;如果30分钟后&#xff0c;没有支付&#xff0c;订单取消。 3.预约餐厅&#xff0c;提前半个小时发短信通知用户。 A -> 13:00 17:00 16:30 延迟时间&a…

麒麟V10安装Redis6.2.6

1、下载redis安装包 Redis各版本下载&#xff1a;https://download.redis.io/releases/ 2、将下载后的.tar.gz压缩包上传到到服务器自定义文件夹下 3、 解压文件 tar -zxvf redis-6.2.6.tar.gzmv redis-6.2.6 redis4、安装redis 在redis文件夹下输入make指令 cd /opt/redi…

性能测试 —— Jmeter 命令行详细

我们在启动Jmeter时 会看见&#xff1a;Don’t use GUI mode for load testing !, only for Test creation and Test debugging.For load testing, use CLI Mode (was NON GUI) 这句话的意思就是说&#xff0c;不要使用gui模式进行负载测试&#xff0c;gui模式仅仅是创建脚本…

【LeetCode: 628. 三个数的最大乘积 + 排序 + 贪心】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

C++ linked_hash_map按顺序保存的容器

HashMap中不存在保存顺序的机制。而在LinkedHashMap中可以保持两种顺序&#xff0c;分别是插入顺序和访问顺序&#xff0c;这个是可以在LinkedHashMap的初始化方法中进行指定的。相对于访问顺序&#xff0c;按照插入顺序进行编排被使用到的场景更多一些&#xff0c;所以默认是按…