linux windows 串口,c – linux和windows之间的串行通信

2023-05-16

我将数据字节从linux发送到串口RS232的窗口,然后一切正常,只有我必须处理从linux发送的0xa,因为Windows将其读取为0xd 0xa.

但是当我从windows发送数据字节到linux时,一些字节被替换为 –

?windows发送 – 0xd linux接收0xa

windows发送 – 0x11 linux接收整数8200的垃圾tyte值

请解释当我将数据从Windows发送到Linux时出了什么问题.

提前致谢

Windows串口初始化

char *pcCommPort = "COM1";

hCom = CreateFile( TEXT("COM1"),

GENERIC_READ | GENERIC_WRITE,

0, // must be opened with exclusive-access

NULL, // no security attributes

OPEN_EXISTING, // must use OPEN_EXISTING

0, // not overlapped I/O

NULL // hTemplate must be NULL for comm devices

);

fSuccess = GetCommState(hCom, &dcb);

FillMemory(&dcb, sizeof(dcb),0);

dcb.DCBlength = sizeof(dcb);

dcb.BaudRate = CBR_115200; // set the baud rate

dcb.ByteSize = 8; // data size, xmit, and rcv

dcb.Parity = NOPARITY; // no parity bit

dcb.StopBits = ONESTOPBIT; // one stop bit

dcb.fOutxCtsFlow = false;

fSuccess = SetCommState(hCom, &dcb);

buff_success = SetupComm(hCom, 1024, 1024);

COMMTIMEOUTS cmt;

// ReadIntervalTimeout in ms

cmt.ReadIntervalTimeout = 1000;

cmt.ReadTotalTimeoutMultiplier = 1000;

cmt.ReadTotalTimeoutConstant=1000;

timeout_flag = SetCommTimeouts(hCom, &cmt);

windows写序列 –

WriteFile(hCom, buffer, len, &write, NULL);

Linux串口初始化 –

_fd_port_no = open("//dev//ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);

tcgetattr(_fd_port_no, &options);

cfsetispeed(&options, B115200);

cfsetospeed(&options, B115200);

options.c_cflag |= (CS8);

options.c_cflag|=(CLOCAL|CREAD);

options.c_cflag &=~PARENB;

options.c_cflag &= ~CSTOPB;

options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

options.c_iflag |= (IXON | IXOFF | IXANY);

options.c_cflag &= ~ CRTSCTS;

tcsetattr(_fd_port_no, TCSANOW, &options);

读串口linux-

while(read(_fd_port_no,buffer+_buffer_len,sizeof(buffer))>0)

{

_buffer_len = _buffer_len+sizeof(buffer);

}

是的,正如我从Linux告诉Windows只检测到NL / CR问题,但我通过字节替换解决了它,

但是你对从Windows发送到Linux的serila数据(字节替换策略)有任何了解吗?

实际上我必须通过串行发送200字节块中的200 KB文件,以便在从Windows发送到Linux时可以替换哪个字节

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux windows 串口,c – linux和windows之间的串行通信 的相关文章

随机推荐

  • oracle数据库安装配置错误,Oracle数据库配置错误信息解决方法(转)

    Oracle客户端网络配置 xff1a l 在Oralce产品安装完成后 xff0c 为了与数据库服务器进行连接或者是两台数据库之间进行数据复制 xff0c 则必须进行网络连接配置 l Oracle9i Net Service配置方法 xf
  • Smart3D三维建模操作笔记

    基本步骤都有 xff0c 写的很乱 xff0c 待整理 软件教程视频 xff1a https www iqiyi com v 19rxtdw1lo html 许可只能用一次 Master 三维建模软件 xff0c 主从工作模式 xff1a
  • 超详细的CentOS下载与图文安装

    一 CentOS7 4下载 官网下载页面地址 xff1a Index of 如果觉得下载比较繁琐 xff0c 我已经提供了CentOS7 4的安装包 链接 xff1a https pan baidu com s 1cRgNfZ5REf4LQ
  • Linux控制台命令结果返回,bash的命令执行状态返回值及命令行展开详解

    命令执行状态返回值及命令行展开是bash的2个基本特性 xff0c 其详细特点及应用如下 xff1a 一 命令执行的状态结果 xff1a bash通过状态返回值来输出此结果 成功 xff1a 0 失败 xff1a 1 255 命令执行完成之
  • rtos和linux在内存管理上,freertos与linux区别

    freeRTOS是一个实时操作系统 xff0c 主要实现了任务调度 内存管理 IPC 中断管理这几个模块 xff0c 它要求快速的处理任务 xff0c gui 驱动框架 shell 这些都不是它的核心功能 xff0c 而且大部分情况下都不会
  • 如何远程连接MySQL数据库

    新安装的 MySQL 只有一个 root 用户 xff0c 默认不开启远程连接 下面以 Ubuntu 系统下的 MySQL 为例 xff0c 说明如何远程连接 MySQL 数据库 登录 root 用户 mysql uroot pyongdu
  • linux重启时无法关机,linux系统无法关机/重启

    机器型号 xff1a 戴尔380 系统 xff1a Linux操作系统 使用图形界面启动后 xff0c 在开始菜单里 xff0d 关机 xff0c 显示器 鼠标 键盘瞬间断电 xff0c 但是主机保持原状 xff0c 当ssh远程可以登录该
  • 卫星导航算法 --geo 库函数的学习

    博主自己在看px4源码时 xff0c 发现geo的好多库函数挺有意思的 xff0c 于是将其进行总结学习 库函数 xff1a 1 int map projection global reproject float x float y dou
  • pixhawk 源码分析-SPI驱动-MS5611

    最近学习了一下SPI的驱动软件 xff0c 在此将其进行总结 本文使用的代码为pixhawk 1 5 5版本的源码 源码下载地址 第一步函数入口 xff1a 老规矩 xff0c 所有px4的代码的函数入口都是在启动脚本中 xff0c 启动脚
  • ucosii内核总结

    博主最近一直在看有关ucosii的代码 xff0c 并将其成功移植到了正点原子STM32F103的开发板上 颇有一些收获 xff0c 于是将其总结下来与大家一起分享 本文不会向你介绍怎么移植ucos xff08 在STM32上移植ucos的
  • python 语法糖_python中有哪些语法糖?

    在对待解题思路的时候 xff0c 往往会有多种方法实现最后的结果 只不过有一种是我们所说的常见用法 xff0c 另一类是在这种特性条件下 xff0c 另辟蹊径产生的解决方法 xff0c 语法糖可以说和这种理念是一样的 xff0c 为了简便
  • VDO、RAID、LVM

    VDO RAID LVM实验记录 VDORAIDRAID10实验RAID5实验 LVM创建逻辑卷扩容逻辑卷缩小逻辑卷逻辑卷快照删除逻辑卷 VDO 使用vdo 虚拟数据优化 目的节省空间 实验为创建挂载的操作 虚拟机中新添加一块SATA硬盘
  • 使用Android手机控制树莓派操作流程

    使用Android手机控制树莓派操作流程 二次排版请看此连接 xff1a 详细请看二次排版 xff0c 有图有真相直达 xff1a 如果你觉得用计算机来控制树莓派不太方便 xff0c 要求路由器网线等比较多 xff0c 那么今天我就简单的说
  • 一次可编程的非易失性存储器(OTP NVM)工作原理、eFuse模块解析

    关于eFuse模块解析 一次可编程的非易失性存储器 xff08 OTP NVM xff09 解析 1 基本概况及介绍1 1 相关简介1 2 关于eFuse工作原理 2 应用功能总结3 关于eFuse解析3 1 基本介绍3 2 相关信号3 3
  • 滤波器原理及其作用计算机网络,滤波器的原理与作用

    目录1 基本原理 2 滤波的概念 3 主要参数 4 作用 5 使用 滤波器是什么 滤波器是对波进行过滤的器件 xff0c 一般有两个端口 xff0c 一个输入信号 一个输出信号 可以说它是重要的电子元器件 xff0c 滤波器把电源功率传输到
  • python isdigit用法中0_Python string isdigit()用法及代码示例

    在Python中 xff0c isdigit 是用于字符串处理的内置方法 如果字符串中的所有字符均为数字 xff0c 则isdigit 方法返回 True xff0c 否则 xff0c 返回 False 此函数用于检查参数是否包含数字 xf
  • C语言错误r6002,奇怪的C语言浮点数问题

    奇怪的C语言浮点数问题 奇怪的C语言浮点数问题 如下的程序用VC6 0编译运行 debug时报运行时错误 release时出现 runtime error R6002 floating point not loaded 奇怪极了 同样的程序
  • cas mysql_CAS单点登录之mysql数据库用户验证及常见问题

    前面已经介绍了CAS服务器的搭建 xff0c 详情见 xff1a 搭建CAS单点登录服务器 然而前面只是简单地介绍了服务器的搭建 xff0c 其验证方式是原始的配置文件的方式 xff0c 这显然不能满足日常的需求 下面介绍下通过mysql数
  • Android Studio的build.gradld(Module:app)版本信息

    Android Gradle插件 Android studio是采用Gradle进行代码的打包编译以及构建项目的 Gradle是一个非常先进的开源化自动构建工具 xff0c 面向于全平台 xff0c 所以Android在基于Gradle进行
  • linux windows 串口,c – linux和windows之间的串行通信

    我将数据字节从linux发送到串口RS232的窗口 然后一切正常 只有我必须处理从linux发送的0xa 因为Windows将其读取为0xd 0xa 但是当我从windows发送数据字节到linux时 一些字节被替换为 windows发送