当前位置:  技术问答>linux和unix

自己写的一个linuxc++读串口类的读出来的数据是一段一段的。请问是什么原因?

    来源: 互联网  发布时间:2016-11-30

    本文导语:  从串口读数据,读出来显示: $GPGSV, 3,1,09,22, 75,257,,2 5,58,140,, 18,56,167, ,14,49,32 9,51*71 $ GPGSV,3,2 ,09,12,44, 065,51,31, 27,250,,0 9,20,047,4 7,15,09,1 00,*72 $G PGSV,3,3, 09,27,07,0 53,43*43 而用他人的读串口的程序(俺没他代码) 显示: $GPGSV,3...

从串口读数据,读出来显示:
$GPGSV,
3,1,09,22,
75,257,,2
5,58,140,,
18,56,167,
,14,49,32
9,51*71
$
GPGSV,3,2
,09,12,44,
065,51,31,
27,250,,0
9,20,047,4
7,15,09,1
00,*72
$G
PGSV,3,3,
09,27,07,0
53,43*43
而用他人的读串口的程序(俺没他代码)
显示:
$GPGSV,3,1,09,22,75,257,,25,58,140,,18,56,167,,14,49,329,52*72
$GPGSV,3,2,09,12,44,065,51,31,27,250,,09,20,047,47,15,09,100,*72
$GPGSV,3,3,09,27,07,053,43*43

ctty.h

#ifndef CTTY_H
#define CTTY_H

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

//最大设备名长度
#define DEVICE_NAME_MAX_LENGTH 100

class CTty
{
public:
CTty();
virtual ~CTty();

        //主要使用:        
        void setDeviceNameBaudrate(const char* devicename, unsigned int baud_rate);//设置串口设备名和波特率
        bool OpenSet();//打开并初始化设备
        int getFd();//得到设备fd号
        int Read(char* buf, unsigned int maxsize);//读
        int Wrtie(char* buf, unsigned int bufsize);//写
        bool Close();//关闭设备        

        //非主要使用:
        bool Open();//打开设备
        bool Set();//设置设备
        void setDeviceConfig(unsigned char data_bit,unsigned char stop_bit,char parity);
        void setDeviceName(const char* devicesname);
        void setBaudRate(unsigned int baud_rate);
        void setDatabits(unsigned char data_bit);
void setStopbits(unsigned char stop_bit);
void setParity(char parity);        

private:
int m_fd;
        char m_devicename[DEVICE_NAME_MAX_LENGTH];
        unsigned int m_baud_rate;
        unsigned char m_data_bits;
unsigned char m_stop_bits;
char m_parity;
};
#endif


ctty.cpp

#include "ctty.h"
#include 

#define DEFAULT_DEVICE_NAME "/dev/ttyS1"
#define DEFAULT_BAUD_RATE 115200
#define DEFAULT_DATA_BITS 8
#define DEFAULT_STOP_BITS 1
#define DEFAULT_PARITY 'N'

CTty::CTty()
{
    setDeviceNameBaudrate(DEFAULT_DEVICE_NAME,DEFAULT_BAUD_RATE);
    setDeviceConfig(DEFAULT_DATA_BITS,DEFAULT_STOP_BITS,DEFAULT_PARITY);
}

CTty::~CTty()
{
    Close();
}

bool CTty::OpenSet()
{
    if(Open())
    {
        if(Set())
        {
#ifdef DEBUG
            std::cout

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • LinuxC论坛开张
  • linuxC可心发送电子邮件吗?
  • 急求LinuxC 函数库参考手册
  • 求教linuxC编程
  • 请问哪位friend知道哪里有LinuxC++的教程??
  • 询问linuxC/C++开发入门比较好的书
  • 关于linuxC socket的一道题
  • linuxC中的fork问题,请教大侠帮忙解答
  • 为什么LinuxC库文件中的有些函数虽然加了头文件,但在使用前要声明?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3