用串口调试助手给单片机以字符串的形式发送数据时,结尾是不默认添加'\0'的

这个你们知道吗?如果我今天才知道,说明什么,你们是通过什么途径知道的,

1个回答

这只是一种通信协议,双方协定了末尾不加结束符

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
串口调试助手可以发送十六进制和字符串,如果发送的命令是ascii怎么办呢,

字符串和ascii是不一样的把,怎么可以让单片机和一个支持串口通信的设备通信,哪个设备只能接收ascii,我用单片机发送给他的时候,应该是什么格式呢,ascii码一位即可,命令是2,3...9就这样的,单个数字

串口调试助手接收数据

接收到的数据有固定长度,有“FF”做为结束符,但是数据可能会分成两段接收,比如一条数据为“150114145300 FF",它可能先收到”15011414“,再收到”5300 FF“,怎么可以做到接收到第一部分不显示,接收到含有结束符的第二部分后,将完整的信息一起显示出来?接收事件是这样写的: Byte[] receivedData = new Byte[serialPort1.BytesToRead]; //创建接收字节组 serialPort1.Read(receivedData, 0, receivedData.Length); //读取数据 不知道为什么有时候会吧一条数据拆分成2部分接收,如果能告诉我如何能一次接收完整的信息就更好了。

求51单片机用uart发送接收到的字符串

51单片机用uart 把接收到的字符串 自动显示在串口调试助手上的代码。

串口助手发送中文乱码的问题

![图片说明](https://img-ask.csdn.net/upload/201507/24/1437738427_441456.jpg) 当发送连续字符的时候,显示乱码, ![图片说明](https://img-ask.csdn.net/upload/201507/24/1437738468_81641.jpg)i 当每四个字空一格时,显示正常, ![图片说明](https://img-ask.csdn.net/upload/201507/24/1437738510_755147.jpg) 当每四个字加字符时,也显示正常,谁知道这是什么原因?

STM32串口通信,串口调试助手中可以实现收发,自己编的串口助手就只能收不能发,有大神知道怎么办吗?

如题,最近做一个这样的调试,用32的开发板向电脑发送数据,用普通的串口调试助手就可以正常收发。 实际如下:32设备收到发来的信号,然后再将另外一组数据发送到调试助手 ![图片说明](https://img-ask.csdn.net/upload/201810/23/1540282792_7501.png) 然后在普通的串口调试助手上就是这样的; 我自己根据博客上的代码写了个差不多的串口工具,用的是Communications control ,version6.0这个控件写的。 但是结果上来说,如果32定时自己向这个工具发数据的话是可以发的,工具也能收到并且显示出来,但是用这个工具向32发数据32却收不到。 因此我又用了虚拟串口,用电脑上的串口调试助手和我写的工具互相收发,双方也都是能收到数据,也能互相发送数据,请大神帮我看看到底是那里出了问题! 串口工具收到32的数据: ![图片说明](https://img-ask.csdn.net/upload/201810/23/1540283320_110440.png) 但是这个串口工具向32发送时32却收不到数据。 为了验证串口可以发送,我用了虚拟串口,如下: ![图片说明](https://img-ask.csdn.net/upload/201810/23/1540283543_713052.png) STM32的程序如下: void UART1_Send_Array() // { unsigned char i=0; // unsigned char t=0; // num=8; for(i=0;i<num;i++) { USART_SendData(USART1,send_array[t]); // while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);// t++; } } if(USART_RX_STA&0x8000) { UART1_Send_Array(); USART_RX_STA=0; LED0=!LED0; } 以及初始化等 #if EN_USART1_RX //Èç¹ûʹÄÜÁ˽ÓÊÕ //´®¿Ú1ÖжϷþÎñ³ÌÐò //×¢Òâ,¶ÁÈ¡USARTx->SRÄܱÜÃâĪÃûÆäÃîµÄ´íÎó u8 USART_RX_BUF[USART_REC_LEN]; //½ÓÊÕ»º³å,×î´óUSART_REC_LEN¸ö×Ö½Ú. //½ÓÊÕ״̬ //bit15£¬ ½ÓÊÕÍê³É±êÖ¾ //bit14£¬ ½ÓÊÕµ½0x0d //bit13~0£¬ ½ÓÊÕµ½µÄÓÐЧ×Ö½ÚÊýÄ¿ u16 USART_RX_STA=0; //½ÓÊÕ״̬±ê¼Ç 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 } void USART1_IRQHandler(void) //´®¿Ú1ÖжϷþÎñ³ÌÐò { u8 Res; #if SYSTEM_SUPPORT_OS //Èç¹ûSYSTEM_SUPPORT_OSΪÕ棬ÔòÐèÒªÖ§³ÖOS. OSIntEnter(); #endif 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;//½ÓÊÕÊý¾Ý´íÎó,ÖØпªÊ¼½ÓÊÕ } } } } #if SYSTEM_SUPPORT_OS //Èç¹ûSYSTEM_SUPPORT_OSΪÕ棬ÔòÐèÒªÖ§³ÖOS. OSIntExit(); #endif } #endif 主要就是设置GPIO口,设置波特率等等 VS2010的主要程序如下: void CSerialTestDlg::OnCbnSelchangeComboCom() { // TODO: 在此添加控件通知处理程序代码 int nSel; nSel = m_comboCom.GetCurSel();//获取组合框控件的列表框中选中项的索引 m_ctrlComm.put_CommPort(nSel+1);//选择串口号(这里因为列表框的索引号是从0开始,所以(nSel+1)对应的才是我们所选的串口号) m_ctrlComm.put_PortOpen(TRUE);//打开串口 m_ctrlComm.put_RThreshold(2);//收到两个字节引发OnComm事件 m_ctrlComm.put_InputMode(1);//输入模式选为二进制 m_ctrlComm.put_Settings(_T("9600,n,8,1"));//设置串口参数,波特率,无奇偶校验,位停止位,位数据位 m_ctrlComm.put_InputMode(1); // 以二进制方式检取数据 m_ctrlComm.put_RThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 m_ctrlComm.put_InputLen(0); //设置当前接收区数据长度为0 m_ctrlComm.get_Input();//先预读缓冲区以清除残留数据 m_setOk = true; //标记串口设置OK } BEGIN_EVENTSINK_MAP(CSerialTestDlg, CDialogEx) ON_EVENT(CSerialTestDlg, IDC_MSCOMM1, 1, CSerialTestDlg::OnComm, VTS_NONE) END_EVENTSINK_MAP() void CSerialTestDlg::OnComm() { // TODO: 在此处添加消息处理程序代码 VARIANT variant_inp; //Variant 是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据。 COleSafeArray safearray_inp; LONG len,k; BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integer that is not signed. CString strtemp; if(m_ctrlComm.get_CommEvent() == 2) //事件值为2表示接收缓冲区内有字符 { ////////以下你可以根据自己的通信协议加入处理代码 variant_inp=m_ctrlComm.get_Input(); //读缓冲区 safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 for(k=0;k<len;k++) safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k<len;k++) //将数组转换为Cstring型变量 { BYTE bt=*(char*)(rxdata+k);//字符型 strtemp.Format(_T("%x"),bt); //8位数组显示,就是现在strtemp中是51 00 00 00 0 m_strRXData+=strtemp; //加入接收编辑框对应字符串 } } UpdateData(FALSE); //更新编辑框内容 } void CSerialTestDlg::OnBnClickedButtonSend() { // TODO: 在此添加控件通知处理程序代码 if (m_setOk == true) //判断是否打开并初始化串口 { UpdateData(TRUE); //读取编辑框内容 m_ctrlComm.put_Output(COleVariant(m_strTXData)); //发送数据 } else { MessageBox(_T("请先选择COM口")); } } void CSerialTestDlg::OnBnClickedButtonCleanup() { // TODO: 在此添加控件通知处理程序代码 m_strRXData=""; UpdateData(FALSE);//更新编辑框内容 } 请求大神帮我看一下大概是哪里出现了问题!

5.利用USART1外设实现将从PC发送至STM32的数据显示在串口调试助手页面。

有好心人能发我一个吗有好心人能发我一个吗有好心人能发我一个吗有好心人能发我一个吗有好心人能发我一个吗有好心人能发我一个吗有好心人能发我一个吗有好心人能发我一个吗有好心人能发我一个吗有好心人能发我一个吗有好心人能发我一个吗

CC2530,串口通信,收发字符问题。

本人单片机新手。下面的程序是正确可达到目的。 对于这个程序我有2个地方不太理解,望大神不吝赐教。 第一个:【设置发送字符串的函数】这个块儿,不太能理解。特别是我注释的地方。 第二个:【主方法中】接收那部分,有一个注释的地方,搞不懂。求解释。。。 没有金币,,,不知道有大神赐教没。。。跪谢。。。 ``` /* 设置串口波特率115200bps,8N1 串口调试助手给CC2530发送字符串,开发板则返回同样字符。 */ #include<ioCC2530.h> #include<string.h> typedef unsigned char uchar; typedef unsigned int uint; #define SIZE 50 char RxBuf; char RxData[SIZE]; char UartState;//0为接收状态,1为发送状态 uint count;//计数器 //延时器 void DelayMs(uint msec) { uint i,j; for(i=0;i<msec;i++) for(j=0;j<1070;j++); } //初始化串口 void InitUart() { //配置I/O,使用外部设备功能 PERCFG=0x00; //外设控制 P0SEL=0x0C; //配置P0端口的2,3为外设 //配置相应的串口 P2DIR&=~0x40; //优先级的控制 U0CSR|=0x80; //设置为UART模式 //配置串口的波特率 U0GCR=11; U0BAUD=216; U0CSR|=0x40;//接收使能 IEN0|=0x84;//允许USART0 RX 中断使能, 打开所有中断 } //设置发送字符串的函数 void UartSendString(char *Data,uint len) { uint i; for(i=0;i<len;i++) { U0DBUF=*Data++; //传输开始时,触发TX中断,此时为1。 while(UTX0IF==0); //!!!!!!!!!!!!!!!!!?不太懂。 UTX0IF=0; } } //接收中断处理函数 #pragma vector=URX0_VECTOR __interrupt void UART0_ISR() { URX0IF=0;//清中断标志 RxBuf=U0DBUF; } //函数入口 void main() { //首先,设置系统的时钟 CLKCONCMD&=~0x40; //把bit 6置为0,系统时钟选择,为32MHz XOSC while(CLKCONSTA&0x40); //等待晶振稳定 CLKCONCMD&=~0x47; //设置系统时钟频率为32MHZ InitUart(); //初始化端口 memset(RxData,0,SIZE); //数据清零 UartState=0; while(1) { if(UartState==0) //接收状态 { if(RxBuf!=0) { //以“#”为结束符,一次最多接收50个字符 if((RxBuf!='#')&&(count<50)) RxData[count++]=RxBuf;//接收 else { if(count>=50) { memset(RxData,0,SIZE); count=0; } else UartState=1; } RxBuf=0; } //RxBuf=0;//!!!!如果把上面的 RxBuf=0;注释,打开这个的话, //!!!!在串口调试助手中会输出每次都不同的结果,小弟找不到规律。 } if(UartState==1)//发送状态 { //首先要禁止接收 U0CSR&=~0x40; UartSendString(RxData,count); //允许接收字符 U0CSR|=0x40; UartState=0;//回复到接收模式 count=0; memset(RxData,0,SIZE); } } } ``` 谢谢!!!

正在学51单片机,对串口通信SBUF数据传输方式不是很清楚。。

为了实现在串口调试助手上输入一个值(0~65535),接收处理后能够在动态数码管上显示。因为不清楚SBUF内的数据存储方式,所以无从下手,特来求解。网上已有的解释是SBUF每次只读一个字节,那么输入12345,它的读取方式是怎样的,希望大家能够给一些指导。 PS:重点是串口中断函数部分接收到的数据转变为整型数据类型的实现方法. 附上代码: ``` #include <reg51.h> typedef unsigned char u8; typedef unsigned int u16; u8 n=0; u8 disp[5]; u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值,共阴 sbit LSA=P2^2; //定义“三”管脚 sbit LSB=P2^3; sbit LSC=P2^4; void delay(u16 i) //延时函数,i=1时,大约延时10us { while(i--); } void DigDisplay() //动态扫描,逐个显示 { u8 i; for(i=0;i<5;i++) { switch(i) //位选,选择点亮的数码管 { case(0): LSA=0;LSB=0;LSC=0; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;//显示第3位 case(4): LSA=0;LSB=0;LSC=1; break;//显示第4位 } P0=disp[i];//发送段码 delay(100);//单次扫描间隔 P0=0x00;//消隐 } } void UsartInit() { SCON=0x50; //设置为工作方式1 TMOD=0x20; //设置计数器工作方式2 PCON=0x80; //波特率加倍 TH1=0xF4; //计数器初始值设置,波特率为4800 TL1=0xF4; ES=1; //打开接收中断 EA=1; //打开总中断 TR1=1; //打开计数器 } void datapros() { disp[0]=smgduan[n/10000]; //万位 disp[1]=smgduan[n%10000/1000]; //千位 disp[2]=smgduan[n%10000%1000/100]; //百位 disp[3]=smgduan[n%10000%1000%100/10]; //十位 disp[4]=smgduan[n%10000%1000%100%10]; //个位 } void main() { UsartInit(); //串口初始化 while(1) { datapros(); //数据处理函数 DigDisplay(); } } void Usart() interrupt 4 //接收停止位的中间时,由内部硬件使RI置1,进入中断 { n=SBUF; //存储接收到的数据 RI=0; //清除接收中断标志位 } ```

关于MSP430F5529单片机的串口问题

一句话,我要疯了,,现在的问题是,使用的串口调试助手来调试的,开发环境从IAR低版本到高版本以及CCS,程序是官方程序和自己编写的,以及网友的。板子是标准板,还有个自己的板子。USB转串口线两条。但是结果都一样。 主要是使用串口调试助手发送字符串,然后接收相同的。结果是,如果我发较长的字符串,前四位会丢失。单个发送字符,根本没有任何返回信息。我简直要疯了,真的不知道原因了,期待大神拯救啊 代码如下: #include <msp430.h> int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P3SEL = BIT3+BIT4; // P3.4,5 = USCI_A0 TXD/RXD UCA0CTL1 |= UCSWRST; // **Put state machine in reset** UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = 6; // 1MHz 9600 (see User's Guide) UCA0BR1 = 0; // 1MHz 9600 UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16; // Modln UCBRSx=0, UCBRFx=0, // over sampling UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt P4OUT=0; __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled __no_operation(); // For debugger } // Echo back RXed character, confirm TX buffer is ready first #pragma vector=USCI_A0_VECTOR __interrupt void USCI_A0_ISR(void) { switch(__even_in_range(UCA0IV,4)) { case 0:break; // Vector 0 - no interrupt case 2: // Vector 2 - RXIFG while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready? UCA0TXBUF = UCA0RXBUF; // TX -> RXed character break; case 4:break; // Vector 4 - TXIFG default: break; } }

Unity3D串口识别遇见的问题

在unity中用自写代码,在虚拟串口间进行传输数据是可以的,但是用RS485转usb设备链接到串口 ,会出现以下情况 1,端口可以打开但是没有检测到载波sp.CDHolding返回的false,设备数据传输LED灯不亮 2,用设备厂家给的调试助手可以正常获取数据, 3,用网上下载的串口调试助手不能从设备上获取数据。 求大神解答 为什么会出现这种问题?怎么解决

Arduino接收串口命令的函数,在PC端分别发送字符”A”,”B”,”C”能够控制LED显示三种不同亮度?

在运行的时候,串口输入a,b,c,led灯一直亮,没有变化 ``` #define LED_PIN 1 void setup() { Serial.begin(9600); pinMode(1, OUTPUT); } void loop() { while (Serial.available()) { char abc = Serial.read(); if(abc == 'a'){ Serial.println("ledLevel=10"); analogWrite(1, 10); delay(2000); } if(abc == 'b'){ Serial.println("ledLevel=100"); analogWrite(1, 100); delay(2000); } if(abc == 'c'){ Serial.println("ledLevel=200"); analogWrite(1, 200); delay(2000); } } } ``` ![图片说明](https://img-ask.csdn.net/upload/201905/02/1556761935_700463.png)

51单片机通过IIC向EEPROM存储和读取数据

我用51单片机通过IIC向EEPROM存储数据,然后再把数据读出来,再通过串口发送出去, 再用串口调试工具(eaglecom)查看数据。。。最后发现一次只能发送或者读取12个 字节,大于12个字节之后的数据全是0xff。不知道原因是什么。 ```#include <reg52.h> #include "delay.h" #include "Uart.h" #define ERROR 0 #define SUCCESS 1 #define MAX 50 sbit SDA = P1^7; sbit SCK = P1^6; unsigned char ack = 0; void IIC_Start() { SDA = 1; SCK = 1; delay_us(1); SDA = 0; delay_us(1); SCK = 0; } void IIC_Stop() { SDA = 0; SCK = 1; delay_us(1); SDA = 1; delay_us(1); SCK = 0; } void IIC_ACK() { SDA = 0; SCK = 1; delay_us(1); SCK = 0; } void IIC_NOACK() { SDA = 1; SCK = 1; delay_us(1); SCK = 0; } void IIC_SendByte(unsigned char temp) { unsigned char i; for(i = 0; i < 8; i++) { SDA = temp & 0x80; SCK = 1; delay_us(1); SCK = 0; delay_us(1); temp <<= 1; } SCK = 1; SDA = 1; delay_us(1); if(0 == SDA) { ack = 1; } else { ack = 0; } SCK = 0; } unsigned char IIC_RecvByte() { unsigned char i, temp; SDA = 1; for(i = 0; i < 8; i++) { SCK = 0; delay_us(1); SCK = 1; temp <<= 1; if(1 == SDA) { temp = temp + 1; } } SCK = 0; return temp; } unsigned char AT24C02_SendStr(unsigned char deceviceaddr, unsigned char romaaddr, unsigned char *s, unsigned char num) { unsigned char i; IIC_Start(); IIC_SendByte(deceviceaddr); if(0 == ack) { return ERROR; } IIC_SendByte(romaaddr); if(0 == ack) { return ERROR; } for(i = 0; i < num; i++) { IIC_SendByte(*s); if(0 == ack) { return ERROR; } s++; } IIC_Stop(); return SUCCESS; } unsigned char AT24C02_RecvStr(unsigned char deceviceaddr, unsigned char romaaddr, unsigned char *s, unsigned char num) { unsigned char i; IIC_Start(); IIC_SendByte(deceviceaddr); if(0 == ack) { return ERROR; } IIC_SendByte(romaaddr); if(0 == ack) { return ERROR; } IIC_Start(); IIC_SendByte(deceviceaddr + 1); if(0 == ack) { return ERROR; } for(i = 0; i < num - 1; i++) { *s = IIC_RecvByte(); IIC_ACK(); s++; } *s = IIC_RecvByte(); IIC_NOACK(); IIC_Stop(); return SUCCESS; } void main() { unsigned char i = 0; unsigned char temp[MAX + 1]; unsigned char str[2]; Uart_init(); for(i = 0; i < MAX; i++) { temp[i] = 7; } if(!AT24C02_SendStr(0xae, 100, temp, MAX)) { return; } delay_ms(200); for(i = MAX; i < (MAX + 1) ;i++) { temp[i] = 0; } delay_ms(200); if(!AT24C02_RecvStr(0xae, 100, temp, MAX)) { return; } delay_ms(200); Uart_SendStr(temp); while(1); } ``` 如果用IICSendByte()和RecvByte(),一个字节一个字节发送和读取的话是不会出错的,但是封装成IICSendStr()和RecvByte()的话,发送或者是接收的字符串长度不能超过12。这是为什么?

51单片机VS的C#语言简单通信和控制

VS中C#怎么通信和控制单片机 我有一个单片机源程序用串口助手调试了 没有返回值 但是那个源程序用别人做的EXE程序是可以使用的 请问有大神懂的指导一下 单片机是51单片机 或者提供一个简单的C#源程序 可以通信 简单控制步进电机正反转就行?![图片说明](https://img-ask.csdn.net/upload/202003/27/1585243160_293329.png)

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

Only老K说-爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

2020_五一数学建模_C题_整理后的数据.zip

该数据是我的程序读取的数据,仅供参考,问题的解决方案:https://blog.csdn.net/qq_41228463/article/details/105993051

R语言入门基础

本课程旨在帮助学习者快速入门R语言: 课程系统详细地介绍了使用R语言进行数据处理的基本思路和方法。 课程能够帮助初学者快速入门数据处理。 课程通过大量的案例详细地介绍了如何使用R语言进行数据分析和处理 课程操作实际案例教学,通过编写代码演示R语言的基本使用方法和技巧

人才招聘系统PHP+MySQL源码

PHP 5.0及以上 + MySQL 5.0及以上 开发的人才招聘系统完全可运行源码,按照操作说明简单配置即可运行。学习PHPWEB应用的完整系统程序源码。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

python可视化分析(matplotlib、seaborn、ggplot2)

python可视化分析总结(matplotlib、seaborn、ggplot)一、matplotlib库1、基本绘图命令3、图形参数设置4、特殊统计图的绘制4.1 数学函数图4.2 气泡图4.1 三维曲面图二、seaborn库1、常用统计图1.1 箱线图1.2 小提琴图1.3 点图1.4 条图与计数图1.5 分组图1.6 概率分布图2、联合图3、配对图三、ggplot库1、图层画法+常用图形2、快速绘图 一、matplotlib库 1、基本绘图命令 import matplotlib.pyplot as

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

课程主要面向嵌入式Linux初学者、工程师、学生 主要从一下几方面进行讲解: 1.linux学习路线、基本命令、高级命令 2.shell、vi及vim入门讲解 3.软件安装下载、NFS、Samba、FTP等服务器配置及使用

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

【大总结2】大学两年,写了这篇几十万字的干货总结

本文十天后设置为粉丝可见,喜欢的提前关注 不要白嫖请点赞 不要白嫖请点赞 不要白嫖请点赞 文中提到的书我都有电子版,可以评论邮箱发给你。 文中提到的书我都有电子版,可以评论邮箱发给你。 文中提到的书我都有电子版,可以评论邮箱发给你。 本篇文章应该算是Java后端开发技术栈的,但是大部分是基础知识,所以我觉得对任何方向都是有用的。 1、数据结构 数据结构是计算机存储、...

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

【项目实战】 图书信息管理系统(Maven,mybatis)(第一个自己独立完成的项目)

《程序设计综合训练实践报告》 此项目为图书信息管理系统,是一个采用了mysql+mybatis框架+java编写的maven项目

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

20行代码教你用python给证件照换底色

20行代码教你用python给证件照换底色

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

MySQL数据库从入门到实战应用

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利2:购课后添加学习助手(微信号:csdn590),按消息提示即可领取编程大礼包! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能! 【课程设计】 在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。 本课程包含3大模块:&nbsp; 一、基础篇: 主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。 二、SQL语言篇: 本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,学会熟练对库表进行增删改查等必备技能。 三、MySQL进阶篇: 本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。 &nbsp;

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

Eclipse archetype-catalog.xml

Eclipse Maven 创建Web 项目报错 Could not resolve archetype org.apache.maven.archetypes:maven-archetype-web

使用TensorFlow+keras快速构建图像分类模型

课程分为两条主线: 1&nbsp;从Tensorflow的基础知识开始,全面介绍Tensorflow和Keras相关内容。通过大量实战,掌握Tensorflow和Keras经常用到的各种建模方式,参数优化方法,自定义参数和模型的手段,以及对训练结果评估与分析的技巧。 2&nbsp;从机器学习基础算法开始,然后进入到图像分类领域,使用MNIST手写数据集和CIFAR10图像数据集,从简单神经网络到深度神经网络,再到卷积神经网络,最终完成复杂模型:残差网络的搭建。完成这条主线,学员将可以自如地使用机器学习的手段来达到图像分类的目的。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

最近面试Java后端开发的感受:如果就以平时项目经验来面试,通过估计很难,不信你来看看

在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面的。 我也知道,不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,但面试官总是只根据面试情况来判断。 但现实情况是,大多数人可能面试前没准备,或准备方法不得当。要知道,我们平时干活更偏重于业务,不可能大量接触到算法,数据结构,底层代码这类面试必问

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

程序员的算法通关课:知己知彼(第一季)

【超实用课程内容】 程序员对于算法一直又爱又恨!特别是在求职面试时,算法类问题绝对是不可逃避的提问点!本门课程作为算法面试系列的第一季,会从“知己知彼”的角度,聊聊关于算法面试的那些事~ 【哪些人适合学习这门课程?】 求职中的开发者,对于面试算法阶段缺少经验 想了解实际工作中算法相关知识 在职程序员,算法基础薄弱,急需充电 【超人气讲师】 孙秀洋&nbsp;| 服务器端工程师 硕士毕业于哈工大计算机科学与技术专业,ACM亚洲区赛铜奖获得者,先后在腾讯和百度从事一线技术研发,对算法和后端技术有深刻见解。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27272 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程无限观看时长,但是大家可以抓紧时间学习后一起讨论哦~

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问