精华内容
下载资源
问答
  • 串口传输数据

    2018-07-11 10:25:02
    使用WPF开发的利用串口接收数据程序,接收到的串口信息可以使用TTS语音播报出来,解决了串口接收数据不完整的问题。
  • Android USB串口传输数据

    千次阅读 2019-06-21 20:02:56
    之前介绍了485串口传输数据,使用了https://github.com/cepr/android-serialport-api,本节课我们介绍usb串口数据传输。 使用usb串口传输数据的第三方库:https://github.com/mik3y/usb-serial-for-android 一、...

    前言:

        之前介绍了485串口传输数据,使用了https://github.com/cepr/android-serialport-api,本节课我们介绍usb串口数据传输。

    使用usb串口传输数据的第三方库:https://github.com/mik3y/usb-serial-for-android

    一、集成

    1、首先我们下载下来demo,然后找到里面的usbSerialForAndroid这个库,我们可以源码依赖。

    2、新建你自己的项目, 然后倒入usbSerialForAndroid这个module,然后在app底下的build.gradle中加入:

    compile project(':usbSerialForAndroid')

    这时候库就倒进来了, 不过不要忘记改掉库中的compileSdkVersion和buildToolsVersion两个变量,改成跟你建的app下的版本相同。

    3、删掉库中作者上传至自己私有服务器的代码, 留以下代码即可:

     4、在工程的res下建目录xml,  device_filter.xml文件复制到自己的工程, 这一步直接从demo里复制过来就好了

    5、在AndroidManifest.xml中添加如下代码:

    第一个是添加操作usb串口的权限, 第二个是添加在你要操作usb串口的界面中,意思是当一个usb设备插入后,会通知此activity

    二、使用

    1、读写

    // Find all available drivers from attached devices.
    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
    List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
    if (availableDrivers.isEmpty()) {
      return;
    }
    
    // Open a connection to the first available driver.
    UsbSerialDriver driver = availableDrivers.get(0);
    UsbDeviceConnection connection = manager.openDevice(driver.getDevice());
    if (connection == null) {
      // You probably need to call UsbManager.requestPermission(driver.getDevice(), ..)
      return;
    }
    
    // Read some data! Most have just one port (port 0).
    UsbSerialPort port = driver.getPorts().get(0);
    try {
      port.open(connection);
      port.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);
    
      byte buffer[] = new byte[16];
      int numBytesRead = port.read(buffer, 1000);
      Log.d(TAG, "Read " + numBytesRead + " bytes.");
    } catch (IOException e) {
      // Deal with error.
    } finally {
      port.close();
    }

    2、监听usb

    private final ExecutorService mExecutor = Executors.newSingleThreadExecutor();
    private SerialInputOutputManager mSerialIoManager;
    
    private final SerialInputOutputManager.Listener mListener =
        new SerialInputOutputManager.Listener() {
            @Override
            public void onRunError(Exception e) {
                Log.d(TAG, "Runner stopped.");
            }
                     
            @Override
            public void onNewData(final byte[] data) {
                //TODO 新的数据
            }
    };
     
    mSerialIoManager = new SerialInputOutputManager(sPort, mListener);//添加监听
    //在新的线程中监听串口的数据变化
    mExecutor.submit(mSerialIoManager);

    注意:

    如果需要接受比较大的数据,有可能会遇到一个问题:数据缓存和接收时间不够,导致数据被覆盖或者丢失,我们就需要修改串口读取缓存了,把 SerialInputOutputManager 中的 READ_WAIT_MILLIS 和 BUFSIZ 改成合适的大小就可以了

    展开全文
  • ADC0832转换代码以及实现串口传输数据代码
  • 主要介绍了python Arduino串口传输数据到电脑并保存至excel表格,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 串口传输数据通信

    2014-08-12 15:42:39
    操作stm8s 实现串口数据传输便于pc机演示通信和仿真调试操作,提高程序的设计完成效率。
  • 本文档一共整理了六种方案操纵串口数据,希望对大家有所帮助
  • STM32F1单片机,烧录代码后,连接LoRa无线数传模块,在PC上面使用串口助手,通过串口传输数据到单片机串口1,并在LCD显示屏显示

    STM32 PC通过串口助手无线传输数据到单片机

      之前学习了STM32单片机,使用正点原子的精英板、两个TTL 转LoRa 半双工无线数传模块,通过PC机串口助手,向32单片机传输数据,接收数据使用串口1。

    无线数传模块

      模块的无线通讯部分基于Semtech Sx1276或Sx1278 的LoRa扩频调制技术,内部自动扩频计算和前导CRC 纠错处理。具有超高接收灵敏度和超强抗干扰能力,同等发射功率下比其他无线数传方案通讯距离更远,表现出更低的功耗。
      无线数传模块采用STM8L低功耗单片机处理器,用户不需要对模块进行二次开发。支持广播透明传输模式和一对多星型协议组网模式。
      引脚说明:
    在这里插入图片描述

    连线架构简图

    在这里插入图片描述

    串口调试助手发送数据

    在这里插入图片描述

    开发板LCD显示:

    在这里插入图片描述

    KEIL工程:

      串口初始化函数:

    void uart_init(u32 bound){
    	//GPIO端口设置
    	GPIO_InitTypeDef GPIO_InitStructure;
    	USART_InitTypeDef USART_InitStructure;
    	NVIC_InitTypeDef NVIC_InitStructure;
    
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);	//使能USART1,GPIOA时钟
    
    	//USART1_TX   GPIOA.9
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出
    	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
    
    	//USART1_RX	  GPIOA.10初始化
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
    	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  
    
    	//Usart1 NVIC 配置
    	NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
    	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
    	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3
    	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
    	NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器
    
    	//USART 初始化设置
    	USART_InitStructure.USART_BaudRate = bound;//串口波特率
    	USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
    	USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
    	USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
    	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
    	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式
    
    	USART_Init(USART1, &USART_InitStructure); //初始化串口1
    	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
    	USART_Cmd(USART1, ENABLE);                    //使能串口1 
    
    }
    

      串口1中断处理函数:

    void USART1_IRQHandler(void)                	//串口1中断服务程序
    	{
    	u8 Res;
    	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
    		{
    		Res =USART_ReceiveData(USART1);	//读取接收到的数据
    		if((USART_RX_STA&0x8000)==0)//接收未完成
    			{
    			if(USART_RX_STA&0x4000)//接收到了0x0d
    				{
    				if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
    				else USART_RX_STA|=0x8000;	//接收完成了 
    				}
    			else //还没收到0X0D
    				{	
    				if(Res==0x0d)USART_RX_STA|=0x4000;
    				else
    					{
    					USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
    					USART_RX_STA++;
    					if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收	  
    					}		 
    				}
    			}   		 
         } 
    } 
    

      主函数:

    #include "led.h"
    #include "delay.h"
    #include "key.h"
    #include "sys.h"
    #include "lcd.h"
    #include "usart.h"
    
    int main(void)
    {		
    	u16 t;  
    	u16 len;	
    	u8 lcd_id[12];			 //存放LCD ID字符串
    
    	delay_init();	    	 //延时函数初始化	  
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
    	uart_init(9600);	 //串口初始化为115200
    	LED_Init();			     //LED端口初始化
    	LCD_Init();
    	//KEY_Init();          //初始化与按键连接的硬件接口
    	POINT_COLOR=RED;
    	sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。
    	LCD_Clear(WHITE);
    	POINT_COLOR=RED;	  
    	LCD_ShowString(30,40,210,24,24,"Elite STM32F1 ^_^"); 
    	LCD_ShowString(30,70,200,16,16,"LoRa");		//低耗远距数传模块
    	LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
    	LCD_ShowString(30,110,200,16,16,lcd_id);		//显示LCD ID	      					 
    	LCD_ShowString(30,130,200,12,12,"2020/08/06");	  
    	while(1)
    	{
    		if(USART_RX_STA&0x8000)
    		{					   
    			len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
    //			printf("\r\n您发送的消息为:\r\n\r\n");
    //			for(t=0;t<len;t++)
    //			{
    //				USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
    //				while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
    //			}
    //			printf("\r\n\r\n");//插入换行
    			LCD_ShowString(30,150,200,16,16,USART_RX_BUF);	  
    			
    			USART_RX_STA=0;
    			for(t=0;t<len;t++)
    			{
    				USART_RX_BUF[t]=' ';
    			}
    		}
    
    	}	 
    }
    
    展开全文
  • 一、目的+问题: 1、发现在MFC串口通信模拟按键抬起+对串口进行了封装能检查是否和配置文件的串口信息匹配...1、在串口传输数据的时候为什么传一个0xAA, 收到的却是0x2A????急啊~ https://bbs.csd..

    目录

    一、目的+问题+解答:

    1、发现在MFC串口通信模拟按键抬起+对串口进行了封装能检查是否和配置文件的串口信息匹配https://blog.csdn.net/qq_40544338/article/details/106052715,时候发现:串口传输数据的时候传一个AA, 收到的却是2A

    ①运行发现:当我配置文件中的有了AA串口信号,在MFC中读取时候变为了2A

    ②答:

    二、参考:

    1、在串口传输数据的时候为什么传一个0xAA, 收到的却是0x2A????急啊~

    三、总结

    1、因为之前发现的文章中,代码有缺陷,请参考我另一篇mfc显示串口输入信息


     

    一、目的+问题+解答:

    1、发现在MFC串口通信模拟按键抬起+对串口进行了封装能检查是否和配置文件的串口信息匹配https://blog.csdn.net/qq_40544338/article/details/106052715,时候发现:串口传输数据的时候传一个AA, 收到的却是2A

    ①运行发现:当我配置文件中的有了AA串口信号,在MFC中读取时候变为了2A

    ②答:

    ①最终进行判断输入的是不是“2A ”如果是就换成“AA ”,记得有空格

    ②问了同事,同事大致推导出出可能是超过了某个范围导致的

     

    二、参考:

    1、在串口传输数据的时候为什么传一个0xAA, 收到的却是0x2A????急啊~

    https://bbs.csdn.net/topics/70283232?list=202511

    ①总结:待检测

     

    三、总结

    1、因为之前发现的文章中,代码有缺陷,请参考我另一篇mfc显示串口输入信息

    展开全文
  • ARM LPC2129 串口传输数据C和汇编程序.rar
  • 本次应用两块单片机,互相传输数据,使得各自数码管显示0=F 电路: P30和P31引脚分别为输入输出引脚,P1各引脚分别连接共阴数码管 #include"reg52.h" typedef unsigned char u8; typedef unsigned int u16; u8 smg...

    本次应用两块单片机,互相传输数据,使得各自数码管显示0=F

    电路:在这里插入图片描述
    P30和P31引脚分别为输入输出引脚,P1各引脚分别连接共阴数码管

    #include"reg52.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    u8 smg[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
    0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    
    void delay(u16 i)
    {
      for(i;i>0;i--){};
    }
    
    void Usart()
    {
      EA=1;
      ES=1;
      TR1=1;
      TMOD=0X20;
      TH1=0XF3;
      TL1=0XF3;
      SCON=0X50;
      PCON=0X80;
    }
    
    void main()
    {
    Usart();
     while(1)
       {
       u8 i;
       for(i=0;i<16;i++)
         {
            SBUF=smg[i];
            while(!TI);
            TI=0;
            delay(5000);
         }
       }
    }
    
    void Usart_() interrupt 4
    {
       u8 date;
       date=SBUF;
       RI=0;
       P1=date;
    }

    此程序用到串口方式1(八位)中断。单片机接收数据,达到八位,将得到的数据存入SBUF缓存器,并将SCON中的RI位,置1,进入中断。在中断程序中,让P1响应得到的SBUF信号。发送数据为主动发送,只需将需要的数据储存在SBUF中,就可自动发送。(切记TI,RI中断请求需要软件置0)

    展开全文
  • 自己跑了一个别人的代码,通过串口传输到串口助手上。正常应该得到的数据是![图片说明](https://img-ask.csdn.net/upload/201904/11/1554975286_90392.png) 如图这样14组计数值。 但我跑出的结果却是 ![图片...
  • android usb host实现串口传输数据

    热门讨论 2012-07-03 20:13:12
    3.1版本之后支持的usb host API。可以通过usb接口让安卓设备作为主设备来接收来自usb的数据,比如平板上插个单片机,就可以接收单片机的数据了。该程序封装了多个包,实现了该功能。
  • STM32 串口 发送 必须 先检测 状态,否则 第一个 字节 无法 发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据0x01 ...
  • android设备使用usb串口传输数据

    千次阅读 2018-06-07 11:19:53
    https://code.google.com/archive/p/android-serialport-api/另一个是我们这次介绍的开源项目:https://github.com/mik3y/usb-serial-for-android   第一步:获取所有的已插入的串口驱动1 UsbManager manager = ...
  • 在开发通过Mobile连接蓝牙串口传输GPS数据时遇到的问题记录一下。 一、蓝牙串口的建立 想在mobile平台上通过蓝牙串口发送数据,遇到过一些问题,在此记录一下,由于在mobile上无法像CE上直接通过代码操作蓝牙去...
  • 起因:学校运河杯报了个项目,...因此我用python写了个上位机程序,用pyserial模块实现arduiho和电脑的串口通讯,再用xlwt模块写入excel表格,用time模块获取时间作为excel的文件名。 import xlwtimport timeimpo...
  • 串口传输数据问题?

    2012-03-28 19:26:41
    单片机用串口传输数据,不加帧头和帧尾,是不是有数据丢失的现象,如果加上帧头和帧尾,是不是就可以解决丢包或者错位的现象了。
  • 串口传输数据卡死问题解决方案

    万次阅读 2017-06-29 16:06:49
    http://blog.csdn.net/wuyazhe/article/details/5606276 膜拜大神
  • 否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据0x010x020x030x04..接收端收到的数据为:0x020...
  • 学习笔记:openmv与STM32串口传输数据的解析程序

    千次阅读 多人点赞 2019-10-19 21:37:08
    学习笔记:openmv与STM32串口传输数据的解析程序 学习初衷 大四毕业设计需要用到openmv与STM32之间的数据传输 由于之前没有学过Python,所以在openmvide编写程序时遇到很多问题。但是不得不说Python是真的好用...
  • 这是用VS2010+Mscomm控件编程实现了串口调试助手的代码,并能把下位机串口通过串口发送过来的数据存储在电脑F盘的data.txt文件中(具体位置和文件名可自己改),具体一步一步是怎么实现的,可以参考我的博客:...
  • 起因:学校运河杯报了个项目...因此我用python写了个上位机程序,用pyserial模块实现arduiho和电脑的串口通讯,再用xlwt模块写入excel表格,用time模块获取时间作为excel的文件名。 复制代码 1 import xlwt 2 impor...
  • 内容为ADUC841通过串口与PC机通信。 PC机向单片机发送一组数据,包括包头(55+aa)单片机处理后回传PC机
  • 想写一个简单的串口通信程序(中断接收pc发送的数据,并随之发送给pc),大概内容如下:初始化USART1和NVIC,USART1_Config();NVIC_Config();中断函数如下:voidUSART1_IRQHandler(vo...想写一个简单的串口通信程序...
  • 目前做的软件是通过串口传输数据的,但在传输数据时拔出串口有时会导致软件异常退出,已经加了接收超时处理以及try catch public void Timers_Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,577
精华内容 2,630
关键字:

串口传输数据