c++调用CSerial 库函数进行串口发送

本文介绍如何使用C++通过串口发送指令控制Arduino板载LED灯的亮灭。包括硬件连接方法、Arduino代码实现及C++串口操作详解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

毕设做的东西要用到这个,请学弟帮忙收集了下,自己也做个整理.

完整实验项目下载:
https://download.youkuaiyun.com/download/a897180673/10310065

用到的硬件:
1.ch340 土豪金模块
2.arduino

首先是连接:
1.ch340一端插在电脑上,一端通过杜邦线和arduino相连
ch340和arduino的连接如下:

一共4个引脚
5v—5v
gng—gnd
txd—rxd
rxd—txd

这里写图片描述

最终的连接效果 连接如下:
(图片传上去倒过来了,还改不过来)
这里写图片描述

硬件搭建ok后开始编写代码
arduino 13号引脚是和板载的LED相连接的,只要让13号引脚输出高电平,LED就会亮,反之就会熄灭用
用c++向arduino 的串口发送a,arduino 就把13号引脚输出高,发送b,arduino就把13号引脚输出低

下面是代码,首先是arduino的

void setup() {
Serial.begin(9600);
pinMode(13,OUTPUT);

}

void loop() {
char x;
if(Serial.available())
{
  x=Serial.read();
  if(x=='a'){
    digitalWrite(13,HIGH);
  }
  if(x=='b'){
    digitalWrite(13,LOW);
  } 
}
}

arduino不停的检测串口,如果ch340发送数据,arduino就会收到,并进行相应的亮灯 和 灭灯的操作

下面是重点了 也就是c++操作ch340串口,并进行串口的数据发送

这里要引入serial的头文件
具体的可以去上面下载完整的工程

工程结构:

这里写图片描述

下面主要看下main.cpp

#include<iostream>
#include"Serial.h"
#include <TCHAR.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
#include <sstream>

CSerial serial;

void  serialInit() {
    serial.OpenSerialPort(_T("COM9:"), 9600, 8, 1);
}
void Send(char x) {
    serial.SendData(&x,1);
}
int main(int argc, char** argv) {
    serialInit();
    char a;
    while (1) {
        cin >> a;
        Send(a);
    }
    return 0;
}

主要就是定义一个串口类 ,然后调用send方法,程序运行后输入a,按回车.这个时候就可以发现arduino收到a,并且板载led亮了,带L标志的小灯

这里写图片描述

在发送 b,带L标志的小灯就灭了

这里写图片描述

### 回答1: Serial.cpp是一个 ROS 库,它可以用来实现串行通信。它提供了一组接口来发送和接收数据,并且可以支持多种数据格式,例如字节,字符串,浮点数,整数等。它还可以用来控制传输速率,以及检测串口连接状态。 ### 回答2: serial.cpp是ROS(机器人操作系统)中的一个库文件,用于与串口进行通信。通过使用该库,可以实现在ROS系统中与串口设备进行数据交换和通信。 在ROS中使用serial.cpp,首先需要将该库文件包含到要使用的源文件中,可以通过以下方式实现: ```cpp #include <serial/serial.h> ``` 要使用serial.cpp进行串口通信,首先需要创建一个serial::Serial对象。可以通过以下方式实现: ```cpp serial::Serial my_serial; ``` 然后,需要配置串口的通信参数,包括波特率、数据位、停止位和校验位等。可以通过以下方式进行配置: ```cpp my_serial.setPort("/dev/ttyUSB0"); // 设置串口设备路径,例如"/dev/ttyUSB0" my_serial.setBaudrate(115200); // 设置波特率,例如115200 my_serial.setParity(serial::parity_none); // 设置校验位 my_serial.setStopbits(serial::stopbits_one); // 设置停止位 my_serial.setBytesize(serial::eightbits); // 设置数据位 ``` 之后,需要打开串口连接,可以通过以下方式实现: ```cpp my_serial.open(); if(my_serial.isOpen()){ ROS_INFO("Serial Port is opened successfully."); } ``` 接下来,可以使用串口进行数据的读取和写入。例如,可以使用read()函数读取数据: ```cpp uint8_t buffer[10]; size_t bytes_read = my_serial.read(buffer, sizeof(buffer)); ``` 还可以使用write()函数向串口写入数据: ```cpp uint8_t data[] = {0x01, 0x02, 0x03}; size_t bytes_written = my_serial.write(data, sizeof(data)); ``` 最后,当不再需要使用串口时,需要关闭串口连接,可以通过以下方式实现: ```cpp my_serial.close(); ``` 总之,使用serial.cpp可以在ROS系统中方便地进行串口通信,通过配置串口参数、打开串口连接、读取数据和写入数据等操作,实现与串口设备的数据交换与通信。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值