51单片机串口发送字符串给电脑 自己写了程序但出不了结果

#include
unsigned char code L1[] = "123456789";
unsigned char code L2[] = "12345678";
void delay(void)
{
unsigned char n,m;
for(m=0;m<200;m++)
for(n=0;n<250;n++);
}
void send_str()

{
unsigned i = 0;
while(L1[i]!='\0');
{
SBUF = L1[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++;

}
}
void main ()
{
TMOD = 0X20;
SCON = 0X40;
PCON = 0X00;
TH1 = 0XFD;
TL1 = 0XFD;
TR1 = 1;
REN = 1;
while(1)
{
send_str();
delay();
}

}
程序不长 但就是找不到错

1个回答

用串口调试助手看看,是发的错误还是收的错误。

sinat_29774479
古柏树下 后来找到了 在while(L1[i]!='\0');多了一个分号 自己书写的小错误
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求51单片机用uart发送接收到的字符串

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

51单片机串口通讯字符错位

程序设定波特率4800,单片机输出的是3c 38 38 38 38 38 38 38 38,但是串口显示的却是D8 EC EC EC EC EC EC EC 00,程序上实在找不到错误,更改代码切到9600也是这样,显示的错位字符都一样。个人认为不像是乱码,乱码应该很乱,接收到的字符不规律,这个非常规律,接收到的全都是D8 EC EC EC EC EC EC EC 00,几乎都不会错。硬件上已经换了两个单片机,重新焊了一块版。此外将该程序烧在之前做的一些板上都正常输出。以下是代码 #include <c8051f350.h> #define uchar unsigned char #define uint unsigned int void PORT_Init (void) { P0MDOUT = 0x17; XBR0 = 0x01; XBR1 = 0xC1; } void UART0_Init (void) { SCON0 = 0x50; //TH1 = 0x64; TMOD = 0x20; CKCON = 0x01; TH1 = 0x60; TL1 = TH1; TR1 = 1; TI0 = 1; } void main() { char g; int z; PCA0MD &= ~0x40; OSCICN = 0x81; PORT_Init(); UART0_Init(); while(1) { g = 0x3c; SBUF0=g; while(TI0==0); TI0=0; for(z = 0;z < 8; z++){ g = 0x38; SBUF0=g; while(TI0==0); TI0=0; } delay(50000); } } 跪求大佬帮忙……折磨半个月了……

菜鸟求助·51单片机串口响应小程序

程序1.在液晶上显示从PC机串口上下发的数据,屏满后自动清屏。 实现如下的功能:1.用下串口0模式,实现数据的移位输出 2.用定时器实现波特率的计算,单片机与PC通信。3.实现多机通信。 4.高级串口功能的应用,请参看Keil的print等串口输出函数。 这时候可实现串口向上位机输出字符串等功能,上位机向下位机发送命令等功能。 如用PC机发送一个字符串“Hello,world”单片机用puts函数回送一个“Hello,my friend”,

C语言51单片机串口通信程序求教

#include <reg51.h> #include <string.h> #include <intrins.h> #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3; bit read_flag=0; void init_serialcomm(void) { SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload PCON |= 0x80; //SMOD=1; // TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz TH1 = 0xFD; //Baud:19200 fosc=11.0592MHz TL1 = 0xFD; //Baud:19200 fosc=11.0592MHz // IE |= 0x90; //Enable Serial Interrupt ES = 1; //使能串口中断 EA = 1; //打开主中断 TR1 = 1; // timer 1 run // TI=1; } //向串口发送一个字符 void send_char_com(unsigned char ch) { SBUF=ch; while(TI==0); TI=0; } //向串口发送一个字符串,strlen为该字符串长度 void send_string_com(unsigned char *str,unsigned int strlen) { unsigned int k=0; do { send_char_com(*(str + k)); k++; } while(k < strlen); } //串口接收中断函数 void serial () interrupt 4 using 3 { if(RI) { unsigned char ch; RI = 0; ch=SBUF; // count3=0; inbuf1[count3]=ch; count3++; if(count3==(INBUF_LEN)) { read_flag=1; count3=0; } } else if(TI) { TI=0; } } main() { init_serialcomm(); //初始化串口 count3=0; while(1) { if(read_flag) //如果取数标志已置位,就将读到的数从串口发出 { read_flag=0; //取数标志清0 send_string_com(inbuf1,INBUF_LEN); } } } 以上程序代码参考自龚建伟 串口中断接收、发送例程。本意是通过串口发送4个字节数据,单片机串口接收后,发送回4个字节数据(在串口助手显示出来)。 但我通过uvison3下载到stc12c5a60s2最少单片机系统,通过串口测试工具(波特率19200,校验位:无,数据位:8,停止位:1)发送数据为:ff ff ff ff (十六进制发),十六进制收,结果为发送4字节,接收2字节,串口助手接收到显示为77 ff, 程序不知道是哪里出错了,求正解。 我自己分析如下: 发送4字节,只接收到2字节?首先怀疑是串口初始化问题,但查不出。再看缓存的4字节数据,也提供了足够的空间,处理上也看不出问题。哪位高手指点下。非常感谢!!!

上位机向单片机发送字符串

上位机向单片机发送一串字符串,存入一个数组缓冲区RX1_Buffer[COM_RX1_Lenth]中,接下来单片机提取数组缓冲区中的一部分字符串,将该字符串转化为整形数据,接着将整形数据转化为十六进制数通过串口发送给上位机,单片机连续向上位机发送数据,上位机第一次能正确的接收到上位机发送给单片机的数据,过后上位机收到的数据就是错误的,不知道是什么原因,附部分程序代码如下: void UART1_int (void) interrupt UART1_VECTOR { if(RI) { RI = 0; if(COM1.B_RX_OK == 0) { if(COM1.RX_Cnt >= COM_RX1_Lenth) COM1.RX_Cnt = 0; RX1_Buffer[COM1.RX_Cnt++] = SBUF; COM1.RX_TimeOut = TimeOutSet1; } } if(TI) { TI = 0; if(COM1.TX_read != COM1.TX_write) { SBUF = TX1_Buffer[COM1.TX_read]; if(++COM1.TX_read >= COM_TX1_Lenth) COM1.TX_read = 0; } else COM1.B_TX_busy = 0; } } void TX1_write2buff(u8 dat) //写入发送缓冲,指针+1 { TX1_Buffer[COM1.TX_write] = dat; //装发送缓冲 if(++COM1.TX_write >= COM_TX1_Lenth) COM1.TX_write = 0; if(COM1.B_TX_busy == 0) //空闲 { COM1.B_TX_busy = 1; //标志忙 TI = 1; //触发发送中断 } } void deal_uart(void) { if(RX1_Buffer[0]== 'R') { for(i=3;i<5;i++) Y_arr[i-3] = RX1_Buffer[i]; t_year = strtod(Y_arr,NULL); TAB_T[5] = DecToHex(t_year); for(i=6;i<8;i++) M_arr[i-6] = RX1_Buffer[i]; t_month = strtod(M_arr,NULL); TAB_T[4] = DecToHex(t_month); for(i=9;i<11;i++) D_arr[i-9] = RX1_Buffer[i]; t_day = strtod(D_arr,NULL); TAB_T[3] = DecToHex(t_day); for(i=12;i<14;i++) S_arr[i-12] = RX1_Buffer[i]; t_hour = strtod(S_arr,NULL); TAB_T[2] = DecToHex(t_hour); COM1.RX_Cnt = 0; } } void main(void) { while (1) { deal_uart(); for(i=0;i<) TX1_write2buff(TAB_T[i]); } } 求原因?

串口UART发送字符串的函数可以发送2个字节吗

uint16_t ADC_GetConversion()这是一个函数, EUSART_WriteString(uint8_t *str)这是一个发送字符串的函数, 我可以实现把ADC_GetConversion()的返回值用EUSART_WriteString发送出去吗, EUSART_WriteString(*ADC_GetConversion());能这样实现吗?

51单片机通过esp8266发送字符串都手机app

请教一下各位大佬,51单片机按一下按钮之后,怎么通过esp8266发送一个字符串到手机app啊。 现在我可以用手机控制单片机了,但不会从单片机发数据到手机上。

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

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

单片机双机串口通信流水灯

跪求大佬帮我弄下,51单片机双机串口通信流水灯(两个按键,16个流水灯)的程序和原理图。(。・ω・)

这个单片机串口程序为何输入字符串而熟出的是ascll码?

#include <reg51.h> //包含头文件 //毫秒级延时函数 void delay(unsigned int x) { unsigned char i; while(x--) { for(i = 0;i < 120;i++); } } //字符发送函数 void putchar(unsigned char data1) { SBUF = data1; //将待发送的字符送入发送缓冲器 while(TI == 0); //等待发送完成 TI = 0; //发送中断标志请0 } //字符串发送函数 void putstring(unsigned char *dat) { while(*dat != '\0') //判断字符串是否发送完毕 { putchar(*dat); //发送单个字符 dat++; //字符地址加1,指向先下一个字符 delay(5); } } //主函数 void main(void) { unsigned char c = 0; SCON = 0x50; //串口方式1 ,允许接收 TMOD = 0x20; //T1工作于方式2 PCON = 0x00; //波特率不倍增 TL1 = 0xfd; //波特率设置 TH1 = 0xfd; // EA = 1; //开总中断 ES = 1; //开串口接收中断 TR1 = 1; //定时器开启 delay(200); putstring("Receiving from 8051...\r\n"); //串口向终端发送字符串,结尾处回车换行 putstring("----------------------\r\n"); delay(50); while(1) { } } // void revdata(void) interrupt 4 { unsigned char temp; if(RI == 0) return; //如果没有接收中断标志,返回 ES = 0; //关闭串口中断 RI = 0; //清串行中断标志位 temp = SBUF; //接收缓冲器中的字符 putchar(temp); //将接收的字符发送出去 ES = 1; //开启串口中断 }

正在学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; //清除接收中断标志位 } ```

求大佬检查下我的代码为什么不能完成我想要的功能?关于51单片机C语言串口通讯方面的。

# 欲完成的功能: 我想要用pc的串口通讯助手给单片机发送xyz坐标,并将xyz坐标分别存到xm,ym,zm三个字符串数组中,然后用串口发送字符串函数将xm,ym,zm这三个数组再发送给串口通讯助手显示其值。 以下是这部分的代码: ``` #include <stc15f2k60s2.h> #define FOSC 12000000 //设置晶振 #define BAUD 9600 //设定的波特率 char buf_string[13]; //定义数据包长度为13个字符 unsigned char flag=0; unsigned char busy; unsigned char tag; unsigned char i,j=0,k=0,a,b,c; void UART_Init(void) //初始化 { SCON=0x50; //8位UART 波特率可变 允许接受 T2L=(65536-(FOSC/4/BAUD)); //设置装载值 T2H=(65536-(FOSC/4/BAUD))>>8; AUXR =0x14; //T2为1T模式,并启动定时器2 AUXR |=0x01; //选择定时器2为串口1的波特率发生器 ES =1; //使能串口中断 EA =1; //开启总中断 } void UART_Sendchar(unsigned char dat) //串口发送函数 { while(busy); busy=1; SBUF=dat; } void UART_SendString(unsigned char *s) //串口字符串发送 { while(*s) { UART_Sendchar(*s++); } } ## /*之前的代码应该没问题,在此之后之后是我认为有可能出问题的字段*/ void ReceiveString() //串口字符串接收函数 { if(j<13) //将输入坐标总字数规定在13位以内,且接受格式规定为(X,Y,Z),最大可输入的位数为13位,例如(-99,-99,-99)。 { buf_string[j]=SBUF; if(buf_string[j]==',' && a==0) a=j;//记录下第一个逗号 if(buf_string[j]==',' && a!=j) b=j;//记录下第二个逗号 if(buf_string[j]==')') c=j; //记录下右括弧,也就是数据的最后一位 j++; } } bit Deal_UART_RecData() //处理串口接收数据包函数(成功处理数据包则返回1,否则返回0) { buf_string[c+1]='\0'; //让接受到的")"的之后一位清零 if(buf_string[0]=='(' && buf_string[c]==')' && buf_string[a]==',' && buf_string[b]==',') //进行数据格式验证 { return 0; } return 1; } //--------------主函数--------------- void main() { char xm[4]; char ym[4]; char zm[4]; UART_Init(); UART_SendString("开始!"); while(1) { if(flag==1) { for(i=1;i<a;i++) { xm[k]=buf_string[i]; k++; } xm[k]='\0'; k=0; for(i=a+1;i<b;i++) { ym[k]=buf_string[i]; k++; } ym[k]='\0'; k=0; for(i=b+1;i<c;i++) { zm[k]=buf_string[i]; k++; } zm[k]='\0'; k=0; UART_SendString("\r\nX坐标是\r\n ");UART_SendString(xm); UART_SendString("\r\nY坐标是\r\n ");UART_SendString(ym); UART_SendString("\r\nZ坐标是\r\n ");UART_SendString(zm); a=b=c=j=0; flag=0; } while(!flag); } } //------------------------------串口中断------------------------------- void USART() interrupt 4 //标志位TI和RI需要手动复位,TI和RI置位共用一个中断入口 { if(RI) //接受标志位 { ReceiveString(); if(Deal_UART_RecData()) { flag=1; } RI=0; //清接受 } if(TI) //发送标志位 { TI=0; //清发送标志位 busy=0; } } ``` ## 请哪位大佬帮忙看看我哪出问题了?

单片机向串口发送键盘指令,串口助手在同一个指令上一直不停的跑 代码如下 哪位大神帮帮忙

#include<reg51.h> #include<stdio.h> #define uchar unsigned char #define uint unsigned int uchar key_scan(); uchar key; void SendOneByte(unsigned char c) { SBUF = c; while(TI==0); TI = 0; } void delay(uint k) //延时程序 { uint i,j; for(i=k;i>0;i--) for(j=110;j>0;j--); } void main() //主程序 { uchar b; TMOD = 0x20; //定时器T1的工作方式2,8位数据自动重装 SCON = 0x50; //串行口的方式1,8位异步收发,波特率可变。 TH1 = 0xfd; // 装定时器1初值. TL1 = 0xfd; PCON = 0x00; EA = 1; //开总中断 ES = 1; //串行口中断源允许 TR1 = 1; //开定时器1 while(1) //循环开始 { b=key_scan(); switch(b) { case 1: SendOneByte('1'); break; case 2: SendOneByte('2'); break; case 3: SendOneByte('3'); break; case 4: SendOneByte('4'); break; case 5: SendOneByte('5'); break; case 6: SendOneByte('6'); break; case 7: SendOneByte('7'); break; case 8: SendOneByte('8'); break; case 9: SendOneByte('9'); break; case 0: SendOneByte('0'); break; case 11:SendOneByte('U'); break; case 12:SendOneByte('Y'); break; case 13:SendOneByte('N'); break; case 14:SendOneByte('L'); break; case 15:SendOneByte('D'); break; case 16:SendOneByte('R'); break; default :break; } } } uchar key_scan() { uchar cord_h,cord_l,x;//行列值 P1=0xf0; //行线输出全为0 cord_h=P1&0xf0; //读入列线值 if(cord_h!=0xf0) //先检测有无按键按下 { delay(80); //去抖 if(cord_h!=0xf0) { cord_h=P1&0xf0; //读入列线值 P1=cord_h|0x0f; //输出当前列线值 cord_l=P1&0x0f; //读入行线值 x=cord_h+cord_l;//键盘最后组合码值 switch ( x ) { case 0xee: key=1; break; case 0xde: key=2; break; case 0xbe: key=3; break; case 0x7e: key=4; break; case 0xed: key=5; break; case 0xdd: key=6; break; case 0xbd: key=7; break; case 0x7d: key=8; break; case 0xeb: key=9; break; case 0xdb: key=0; break; case 0xbb: key=11; break; case 0x7b: key=12; break; case 0xe7: key=13; break; case 0xd7: key=14; break; case 0xb7: key=15; break; case 0x77: key=16; break; } } } return key; }

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);//更新编辑框内容 } 请求大神帮我看一下大概是哪里出现了问题!

蓝牙串口问题,手机数据不接收

我用的是51单片机上的教程 输入 字符X 会显示 I GET X。 然后我用单片机和电脑相连 输入1 串口助手会显示i get 1 。 我再用蓝牙模块直接和电脑相连 手机连接蓝牙,手机输入1串口助手显示1。证明手机发数据蓝牙能接收。 我再将单片机和蓝牙模块相连,手机连上蓝牙,手机输入1,电脑串口助手没反应,求解这是什么问题呀! 谢谢大家!STC89C52 #include <reg52.h> #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="I get "; void init() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init(); while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; } 这是程序

C51串口中断接收多字节数据,并解析数据,问题是不能解析,哪错了?

#include<reg52.h> #include<math.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int uchar code SZDLJ[13]={0x41,0x54,0x2B,0x43,0x49,0x50,0x4D,0x55,0x58,0x3D,0x31,0x0D,0x0A};//AT+CIPMUX=1 uchar code KQFU[21]={0x41,0x54,0x2B,0x43,0x49,0x50,0x53,0x45,0x52,0x56,0x45,0x52,0x3D,0x31,0x2C,0x38,0x30,0x38,0x30,0x0D,0x0A};//AT+CIPSERVER=1,8080 uint URTAReceivedCount=0,n=1; //用于串口中断子函数中计数 uchar data Tempdatatable[5],CommandDatatable[5]; //定义临时数组和用于调用控制动作的数组 /***************************************************** 函数功能:延时若1ms *******************************************************/ void Delay_1ms(uint i) { uint x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } /***************************************************** 函数:往串口发送数据 功能:只用于设定wifi模块 ***************************************************/ void SendData(uchar *sdata,int num) { int i; for(i=0;i<num;i++) { SBUF=sdata[i]; Delay_1ms(2); } } /******************************************************************** * 函数 :Moto_Forward() * 功能 :前进 ***********************************************************************/ void Moto_Forward() { P1= 0x0a; Delay_1ms(100); } /******************************************************************** * 函数 :Moto_Backward() * 功能 :后退 ***********************************************************************/ void Moto_Backward() { P1= 0x05; Delay_1ms(100); } /******************************************************************** * 函数 :Moto_TurnLeft() * 功能 :左转 ***********************************************************************/ void Moto_TurnLeft() { P1= 0x09; Delay_1ms(100); } /******************************************************************** * 函数 :Moto_TurnRight() * 功能 :右转 ***********************************************************************/ void Moto_TurnRight() { P1= 0x06; Delay_1ms(100); } /******************************************************************** * 函数 :Moto_Stop() * 功能 :停止 ***********************************************************************/ void Moto_Stop() { P1= 0x00; Delay_1ms(100); } /**************************************************************************** 函数:主函数 功能:初始化串口,并从串口发送指令到wifi模块用于设置模块,再使能中断, 再进入while循环,解析从串口收到的数据 *****************************************************************************/ void main(void) { Delay_1ms(3000); TMOD=0x21; //TMOD=0010 0001B,定时器T1工作于方式2 SCON=0x50; //SCON=0101 0000B,串口工作方式1 1起始位8数据位1停止位 PCON=0x00; //PCON=0000 0000B,波特率9600 晶振11.0592 TH1=0xFd; //根据规定给定时器T1赋初值 TL1=0xFd; //根据规定给定时器T1赋初值 TR1=1; //启动定时器T1 SendData(SZDLJ,13); //设置多连 Delay_1ms(3000); SendData(KQFU,21); //开启server端 Delay_1ms(8000); ES = 1; //串口中断使能 EA = 1; //开总中断 while(1) //一直循环直到中断产生,跳进中断执行中断子函数,完后再回到循环并解析数据,等待下次中断到来 { if(CommandDatatable[0]==0xFF&&CommandDatatable[4]==0XFF) { switch(CommandDatatable[1]) { case 0x00: switch(CommandDatatable[2]) { case 0X00:Moto_Stop();break; case 0X01:Moto_Forward();break; case 0X02:Moto_Backward();break; case 0X03:Moto_TurnLeft();break; case 0X04:Moto_TurnRight();break; default : break; } default: break; } } } } /***************************************************************************** 函数:串口中断子函数 功能:接收串口数据,组包成类 “0XFF 0X00 0X01 0X02 0XFF” 的数组,用于主函数解析,包头和包尾都是0XFF,的5元数组 ******************************************************************************/ void Com_Int(void) interrupt 4 { uchar temp; ES=0; RI=0; temp=SBUF; if(temp==0XFF && URTAReceivedCount<3) { Tempdatatable[0]==0XFF; URTAReceivedCount++; } else { Tempdatatable[n]=temp; n++; if(URTAReceivedCount==0&&n==2) n=1; } if(URTAReceivedCount==2) { Tempdatatable[0]=0XFF; Tempdatatable[4]=0XFF; n=1; URTAReceivedCount=0; temp=""; } CommandDatatable[0]=Tempdatatable[0]; CommandDatatable[1]=Tempdatatable[1]; CommandDatatable[2]=Tempdatatable[2]; CommandDatatable[3]=Tempdatatable[3]; CommandDatatable[4]=Tempdatatable[4]; ES=1; } 串口助手给MCU发16进制类似“FF 00 01 02 FF”数时,不能正确解析

C#中如何让字符数组通过串口实时显示在多个Textbox中? 单个Textbox已可以自动逐行显示

![图片说明](https://img-ask.csdn.net/upload/201805/15/1526352922_882104.jpg) ![图片说明](https://img-ask.csdn.net/upload/201805/15/1526353857_841723.jpg) **有程序解释最好,谢谢帮助哦!** (51单片机串口发送) ``` private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) //串口接收事件 { int i = 1; if (!radioButton3.Checked) //接收为字符模式 { string str = serialPort1.ReadExisting(); //字符串方式读取 textBox9.AppendText(str);//添加内容 } else //如果接收模式为数值模式 { byte[] data = new byte[serialPort1.BytesToRead]; //定义缓冲区,因为串口事件触发时有可能收到不止一个字节 serialPort1.Read(data, 0, data.Length); //读取数据 foreach (byte Member in data) //遍历用法 { string str = Convert.ToString(Member, 16).ToUpper(); textBox1.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " "); //文本框显示1 //上一句等同于 if(str.Length==1) //str = '0' + str; //else //str = str; //textBox1.AppendText("0x" + str); } } } ``` ![图片说明](https://img-ask.csdn.net/upload/201805/15/1526354652_533021.jpg) 我是用51单片机逐个字符发送的

如何通过串口修改时钟的时间

请问大神们如何在这个程序里添加串口来改变时钟啊 #include<reg51.h> #include<absacc.h> #define uchar unsigned char #define uint unsigned int /*七段共阴管显示定义*/ //此表为 LED 的字模, 共阴数码管 0-9 - uchar code dispcode[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制 /*定义并初始化变量*/ uchar seconde=0;//秒 uchar minite=0;//分 uchar hour=12; //时 uchar mstcnt=0;//定时器计数,定时50ms,mstcnt满20,秒加1 uchar shi=0;//闹铃功能 uchar fen=0; uchar bjcs;//报警次数 sbit P1_0=P1^0; //second 调整定义 sbit P1_1=P1^1; //minite调整定义 sbit P1_2=P1^2; //hour调整定义 sbit P1_5=P3^0; //整点报时 sbit P1_3=P1^3; //闹铃功能,调整时间 sbit P1_6=P1^6; //调整时 sbit P1_7=P1^7; //调整分 sbit P1_4=P1^4; //关闭闹铃 /*函数声明*/ void delay(uint k ); //延时子程序 void time_pro( ); //时间处理子程序 void display( ); //显示子程序 void keyscan( ); //键盘扫描子程序 /*延时子程序*/ void delay (uint k) { uchar j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } /*时间处理子程序*/ void time_pro(void) { if(seconde==60) { seconde=0; minite++; if(minite==60) { minite=0; hour++; if(hour==24) { hour=0; } } } } /*显示子程序*/ void display(void) { if(P1_3==1) { P2=0XFE; P0=dispcode[seconde%10];//秒个位 delay(1); P2=0XFD; P0=dispcode[seconde/10];//秒十位 delay(1); P2=0XFB; P0=dispcode[10];//间隔符 - delay(1); P2=0XF7; P0=dispcode[minite%10];//分个位 delay(1); P2=0XEF; P0=dispcode[minite/10];//分十位 delay(1); P2=0XDF; P0=dispcode[10];//间隔符 - delay(1); P2=0XBF; P0=dispcode[hour%10];//时个位 delay(1); P2=0X7F; P0=dispcode[hour/10];//时十位 delay(1); } } /*键盘扫描子程序*/ void keyscan(void) { if(P1_0==0)//秒位的调整 { delay(30); if(P1_0==0) { seconde++; if(seconde==60) { seconde=0; } } delay(250); } if(P1_1==0)//分位的调整 { delay(30); if(P1_1==0) { minite++; if(minite==60) { minite=0; } } delay(250); } if(P1_2==0)//时位的调整 { delay(30); if(P1_2==0) { hour++; if(hour==24) { hour=0; } } delay(250); } } /*整点报警*/ void zhengdian (void) { if((seconde==0)&(minite==0))//整点报时 { P1_5=0; delay(1000); P1_5=1; } } /*定时闹钟*/ void dingshi(void) { if(P1_3==0)//按住P1_3BU不松,显示闹铃设置界面,分别按P1_6、P1_7设置闹铃时间。 { P2=0XFE; P0=dispcode[0];//秒个位 delay(1); P2=0XFD; P0=dispcode[0];//秒十位 delay(1); P2=0XFB; P0=dispcode[10];//间隔符 - delay(1); P2=0XF7; P0=dispcode[fen%10];//分个位 delay(1); P2=0XEF; P0=dispcode[fen/10];//分十位 delay(1); P2=0XDF; P0=dispcode[10];//间隔符 - delay(1); P2=0XBF; P0=dispcode[shi%10];//时个位 delay(1); P2=0X7F; P0=dispcode[shi/10];//时十位 delay(1); } if(P1_6==0)//设定时 { delay(30); if(P1_6==0) { shi++; if(shi==24) { shi=0; } } delay(250); } if(P1_7==0)//设定分 { delay(30); if(P1_7==0) { fen++; if(fen==60) { fen=0; } } delay(250); } if((hour==shi)&(minite==fen)&(seconde==0))//闹铃时间到,报警六十次。 { for(bjcs=0;bjcs<60;bjcs++) { P1_5=0; delay(500); P1_5=1; delay(500); } } } /*主函数*/ void main(void) { P1=0XFF; TMOD = 0x11; //time0为定时器,方式1 TH0=0x3c; //预置计数初值,50ms TL0=0xb0; EA=1; //总中断开 ET0=1; //允许定时器0中断 TR0=1; //开启定时器0 while (1) { keyscan(); //按键扫描 dingshi();//定时闹钟 zhengdian();//整点报时 display(); //显示时间 } } void timer0(void) interrupt 1 //定时器0方式1,50ms中断一次 { TH0=0x3c; //手动加载计数脉冲次数 TL0=0xb0; TMOD=0x11; mstcnt++; //用于计算时间,每隔50ms加1 if(mstcnt==20)//mstcnt满20即为一秒 { seconde++;//秒+1 time_pro( ); //时间处理 mstcnt=0; //对计数单元的清零,重新开始计数 } }

单片机经由hc05接收到来自手机发送的信号到底是什么格式的?

上百度查了很久都查不出所以然,如果手机把字符串转换成字节再发送过去,单片机到底是直接接收到整个字符串,还是字符串被转换16进制数再逐个字节接收,看网上的例子好像大部分意思都是变成16进制然后自己编写程序转换为字符串才能接收到原本的shu'ju

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Vue + Spring Boot 项目实战(十九):Web 项目优化解决方案

快来一起探索如何打脸我们的破项目,兄弟姐妹们把害怕打在公屏上!

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解! 目录 博客声明 大数据了解博主粉丝 博主的粉丝群体画像 粉丝群体性别比例、年龄分布 粉丝群体学历分布、职业分布、行业分布 国内、国外粉丝群体地域分布 博主的近期访问每日增量、粉丝每日增量 博客声明 因近期博主写专栏的文章越来越多,也越来越精细,逐步优化文章。因此,最近一段时间,订阅博主专栏的人数增长也非常快,并且专栏价

一个HashMap跟面试官扯了半个小时

一个HashMap能跟面试官扯上半个小时 关注 安琪拉的博客 1.回复面试领取面试资料 2.回复书籍领取技术电子书 3.回复交流领取技术电子书 前言 HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很适合用来考察面试者的Java基础。 开场 面试官: 你先自我介绍一下吧! 安琪拉: 我是安琪拉,草丛三婊之一,最强中单(钟馗不服)!哦,不对,串场了,我是**,目...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

记录下入职中软一个月(外包华为)

我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。 我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

程序员是做全栈工程师好?还是专注一个领域好?

昨天,有位大一的同学私信我,说他要做全栈工程师。 我一听,这不害了孩子么,必须制止啊。 谁知,讲到最后,更确定了他做全栈程序员的梦想。 但凡做全栈工程师的,要么很惨,要么很牛! 但凡很牛的,绝不是一开始就是做全栈的! 全栈工程师听起来好听,但绝没有你想象的那么简单。 今天听我来给你唠,记得帮我点赞哦。 一、全栈工程师的职责 如果你学习编程的目的只是玩玩,那随意,想怎么学怎么学。...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

十个摸鱼,哦,不对,是炫酷(可以玩一整天)的网站!!!

文章目录前言正文**1、Kaspersky Cyberthreat real-time map****2、Finding Home****3、Silk – Interactive Generative Art****4、Liquid Particles 3D****5、WINDOWS93****6、Staggering Beauty****7、Ostagram图片生成器网址****8、全历史网址*...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

用了这个 IDE 插件,5分钟解决前后端联调!

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 |李海庆我是一个 Web 开发前端工程师,受到疫情影响,今天是我在家办公的第78天。开发了两周,...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

Java14 新特性解读

Java14 已于 2020 年 3 月 17 号发布,官方特性解读在这里:https://openjdk.java.net/projects/jdk/14/以下是个人对于特性的中文式...

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

工作两年简历写成这样,谁要你呀!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获! 一、前言 最近有伙伴问小傅哥,我的简历怎么投递了都没有反应,心里慌的很呀。 工作两年了目前的公司没有什么大项目,整天的维护别人的代码,有坑也不让重构,都烦死了。荒废我一身技能无处施展,投递的简历也没人看。我是不动物园里的猩猩,狒狒了! 我要加班,我要996,我要疯狂编码,求给我个机会… ...

相关热词 c# 按行txt c#怎么扫条形码 c#打包html c# 实现刷新数据 c# 两个自定义控件重叠 c#浮点类型计算 c#.net 中文乱码 c# 时间排序 c# 必备书籍 c#异步网络通信
立即提问