社区
Linux/Unix社区
帖子详情
一百分求lINUX串口通讯不能发出'\1a'的问题
asphp
2005-05-31 11:27:47
我在做串口通讯时,一般的ASCII都能够发出去,但当我发出一个0x1a的时候,就不知道发出去什么了。是不是对于CTROL-Z有什么特殊的做法,或者在初始化的时候应该做好一个工作?
谢谢各位
...全文
356
14
打赏
收藏
一百分求lINUX串口通讯不能发出'\1a'的问题
我在做串口通讯时,一般的ASCII都能够发出去,但当我发出一个0x1a的时候,就不知道发出去什么了。是不是对于CTROL-Z有什么特殊的做法,或者在初始化的时候应该做好一个工作? 谢谢各位
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
asphp
2005-08-04
打赏
举报
回复
不好意思,是我处理的问题,硬件只接受\0x1a 我发了两个字符
leemuxiang
2005-06-10
打赏
举报
回复
blueflame(蓝色的火焰)同学回答过这个问题,注意下面的标示
0x11 is part of the XON/XOFF control bytes
VSTOP 0x13 XOFF ^S
VSTART 0x11 XON ^Q
options.c_iflag &= ~IXON;
c_iflag
BRKINT接到BREAK时产生SIGINT
ICRNL将输入的CR转换为NL
IGNBRK忽略BREAK条件
IGNCR忽略CR
IGNPAR忽略奇偶错字符
IMAXBEL在输入队列空时振铃
INLCR将输入的NL转换为CR
INPCK打开输入奇偶校验
ISTRIP剥除输入字符的第8位
IUCLC将输入的大写字符转换成小写字符
IXANY使任一字符都重新起动输出
IXOFF使起动/停止输入控制流起作用
IXON使起动/停止输出控制流起作用
PARMRK标记奇偶错
查一下,哪一个是0x1a。
leemuxiang
2005-06-10
打赏
举报
回复
options.c_iflag &= ~ICRNL;
options.c_iflag &= ~IXON;
options.c_iflag &= ~IXOFF;
asphp
2005-06-03
打赏
举报
回复
各位救我啊
asphp
2005-06-03
打赏
举报
回复
错了,是返回ERROR
asphp
2005-06-03
打赏
举报
回复
我没有调试过,不知道发出了什么东西,因为我是直接操作MODEM,需要0x1a来做为一条信息的结束,我用minicom可以发出这个字符,但用自己写的程序就返回0x1a
ssli
2005-06-02
打赏
举报
回复
换一种显示模式
积木
2005-06-02
打赏
举报
回复
1a 在ascii里面是文件结束的意思,
所以下面就是瞎猜的了
我怀疑你直接使用的是字符方式,而不是二进制的方式,如果使用二进制就会好很多。
nichotilikai
2005-06-02
打赏
举报
回复
Linux里面的串口操作有原始和加工二种方式,用来传送数据时要用原始方式,而且要对一些起控制作用的字节进行屏蔽,设置超时和接收字节数这二个参数来标识是否完成一次传输。
gettext
2005-06-02
打赏
举报
回复
"但当我发出一个0x1a的时候,就不知道发出去什么了。"
发成功了吗?没有成功错误信息是什么?
zygjkl
2005-06-02
打赏
举报
回复
我也有类似的问题: 我用
g_fd = open("/dev/ttyS1", O_RDWR);
if (g_fd < 1) {
printf("open() returned an error (%d). errno = %d\n",
g_fd, errno);
return 0;
}
retlen = write(g_fd, outbuf, len);
outbuf里若包含0x0A,收到方的数据会在0x0A前面插入0x0D;
很奇怪!不知为什么????
六个九十度
2005-05-31
打赏
举报
回复
用什么终端软件?
我只用过minicom
好像还有个kermit,不过我没用过
ascii可发,而0x1a发不了,我想原因可能是你的传输模式是7位数据加1位奇偶校验
实际应设成8位数据,最后加个停止位
blueflame
2005-05-31
打赏
举报
回复
http://cmpp.linuxforum.net/cman-html/man3/tcgetattr.3.html
asphp
2005-05-31
打赏
举报
回复
我查了,设置是正确的,我是自己写的代码初始化的时候是这样的
void SetDataBit (MOBILECOMM* pMobile,INT32 databit)
{
pMobile->termios_new.c_cflag &= ~CSIZE;
switch (databit) {
case 8:
pMobile->termios_new.c_cflag |= CS8;
break;
case 7:
pMobile->termios_new.c_cflag |= CS7;
break;
case 6:
pMobile->termios_new.c_cflag |= CS6;
break;
case 5:
pMobile->termios_new.c_cflag |= CS5;
break;
default:
pMobile->termios_new.c_cflag |= CS8;
break;
}
}
void SetStopBit (MOBILECOMM* pMobile,const char *stopbit)
{
if (0 == strcmp (stopbit, "1")) {
pMobile->termios_new.c_cflag &= ~CSTOPB; /* 1 stop bit */
}
else if (0 == strcmp (stopbit, "1.5")) {
pMobile->termios_new.c_cflag &= ~CSTOPB; /* 1.5 stop bits */
}
else if (0 == strcmp (stopbit, "2")) {
pMobile->termios_new.c_cflag |= CSTOPB; /* 2 stop bits */
}
else {
pMobile->termios_new.c_cflag &= ~CSTOPB; /* 1 stop bit */
}
}
void SetParityCheck (MOBILECOMM* pMobile,char parity)
{
switch (parity) {
case 'N': /* no parity check */
pMobile->termios_new.c_cflag &= ~PARENB;
break;
case 'E': /* even */
pMobile->termios_new.c_cflag |= PARENB;
pMobile->termios_new.c_cflag &= ~PARODD;
break;
case 'O': /* odd */
pMobile->termios_new.c_cflag |= PARENB;
pMobile->termios_new.c_cflag |= ~PARODD;
break;
default: /* no parity check */
pMobile->termios_new.c_cflag &= ~PARENB;
break;
}
}
INT32 SetPortAttr (MOBILECOMM *pMobile)
{
INT32 baudrate;
INT32 databit;
char *stopbit;
char parity;
baudrate=pMobile->baudrate;
databit=pMobile->databit;
stopbit=pMobile->stopbit;
parity=pMobile->parity;
bzero (&pMobile->termios_new, sizeof (pMobile->termios_new));
cfmakeraw (&pMobile->termios_new);
SetBaudrate (pMobile,baudrate);
pMobile->termios_new.c_cflag |= CLOCAL | CREAD; /* | CRTSCTS */
SetDataBit (pMobile,databit);
SetParityCheck (pMobile,parity);
SetStopBit (pMobile,stopbit);
pMobile->termios_new.c_iflag &= ~(XON);
pMobile->termios_new.c_lflag &=~(ICANON|ECHO|ECHOE|ISIG);
pMobile->termios_new.c_oflag &=~OPOST;
pMobile->termios_new.c_cc[VTIME] = 10; /* unit: 1/10 second. */
pMobile->termios_new.c_cc[VSUSP] = 0; /* Ctrl-z */
pMobile->termios_new.c_cc[VMIN] = 0; /* minimal characters for reading */
tcflush (pMobile->fd, TCIFLUSH);
return (tcsetattr (pMobile->fd, TCSANOW, &pMobile->termios_new));
}
Django REST Framwork框架全解
Web应用模式在开发Web应用中,有两种应用模式:前后端不分离在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不再适用于前端App应用,为了对接App后端还需再开发一套接口。 前后端分离在前后端分离的应用模式中,后端仅返回前端所需的数据,不再渲染HTML页面,不再控制前端的效果。至于前端用户看到什么效果,从后端请
求
的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,App有App的处理方式,但无论哪种前端,所需的数据基本相同,后端仅需开发一套逻辑对外提供数据即可。在前后端分离的应用模式中 ,前端与后端的耦合度相对较低。在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。作为一名全栈项目的开发者, 开发标准的 REST 接口,需要用到 Django Rest framework。Django REST framework是构建WebAPI的强大而灵活的工具包。对于开发者来说这个WebAPI来说极具可用性。认证策略(Authentication)包括包OAuth
1a
和OAuth2。串行化(Serialization)同时支持ORM和non-ORM数据。可定制化的基于函数的常规视图,不需要更多的其他的功能。众多的文件以及社区大力支持,被国际认可的公司所使用和信任,包括Mozilla, Red Hat, Heroku, and和Eventbrite.
高通平台android开发总结
但随着操作系统变得越来越复杂(现代操作系统的内核有一两百万行C程序是很常见的事情),把所有这些功能都放在内核中使设计难度迅速增加. 微内核是一个与Monolithic Kernel相反的设计理念.它的目的是使内核缩到最小,...
C 语言常见
问题
集
C 语言常见
问题
集 原著:SteveSummit翻译:朱群英,孙云 修订版0.9.4,2005年6月23日 版权所有c . 2005 目录 目录 i 前言 xvii 1 声明和初始化 1 1.1 我如何决定使用那种整数类型?................
uC
linux
启动过程
uCinux的启动主要经历三个阶段。首先,必须完成CPU和存储器的硬件初始化,在系统RAM中建立程序堆栈和...这一切完成后,uC
linux
启动一个最初的init线程,进入到第三阶段,这时内核已经正常运行,外围模块也都就绪,开
[HCIP-IoT Developer V2.5 题库] 1-50 题 华为
例如,在LoRaWAN中,一个门户网关(gateway)最多可支持几百个节点终端(end-device)进行数据上传,主要取决于网络带宽、信号覆盖范围和节点通信功率等因素。 21. 在HuaweiLiteOS开发过程中,以下描述正确的是()? ...
Linux/Unix社区
23,115
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章