mscomm读取十六进制转为十进制显示

VC6.0写的,本来下位机传的是十进制真好转成字符串显示,现在要求的单片机穿上来的是十六进制的数据请问怎么修改代码转成十进制字符串显示啊





void CTemperDlg::OnCommMscomm() 
{
    m_strRXData=" ";  //每次进入编辑框内容清空等待显示新的数据
    VARIANT variant_inp;
    COleSafeArray safearray_inp;
    LONG len,k;
    BYTE rxdata[2048];         //设置BYTE数组
    CString strtemp;

    static int flag;    //识别码数字标志位

    if(m_ctrlComm.GetCommEvent()==2)//事件值为2表示接收缓冲区内有字符
    {                               //以下你可以根据自己的通信协议加入//处理代码
        variant_inp=m_ctrlComm.GetInput();//读缓冲区
        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("%c",bt);   //将字符送入临时变量strtemp存放
            m_strRXData += strtemp;      //加入接收编辑框对应字符串strtemp


m_RXData+=strtemp;
double tem;
tem=atof(m_strRXData);
CString aa;
 if(tem>31.00)
 {
        m_strlbaojing.SetIcon(m_hIconbaoj);

 }
else
        m_strlbaojing.SetIcon(m_hIconzhc);

        }
    }
    UpdateData(FALSE); 
}

2个回答

不能简单将16进制转换为10进制。要先用串口调试程序分析,发来的数据是什么格式的。
如果是数字,那么直接当成数字后用itoa一类转换
如果是数字对应的ascii码,用char[]接收直接显示不要转换

将接收缓冲区中的接收模式改成二进制模式接收,直接放到byte【】数组,再从数组中读出来应该就是10进制的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用mscomm控件发送十六进制数据的写法
我需要单击一个按钮时发送一个十六进制字符串例如“01 03 00“
javascript去操作mscomm32
javascript怎么把mscomm1.input输出的值转换成16进制
Vb将文本框里输入的十进制数据按chr(13)分割,然后转换成&h+16进制字符串形式
例如文本框里输入253chr(13)255chr(13),要求输出结果书“&HFD” "&HFF",看了好多算法,但是还是没有研究出来. 我自己做的结果如下 Private Sub Text2_KeyPress(KeyAscii As Integer) Dim tmp() As String Dim aa As String * 1 Dim rd As String Dim i As Integer Dim reload As Integer Dim response If pc_draw_flag = False Then MsgBox "请先选择路径规划功能,再进行路径规划!", vbOKOnly + vbInformation, "提示信息!" End If aa = Chr$(KeyAscii) If aa = Chr(13) And pc_draw_flag = True Then tmp = Split(Text2.Text, Chr(13)) '把目标数组按分隔符chr(13)分割 For i = 0 To UBound(tmp) 'UBound()取数组内元素的个数 rd = getnum(CStr(tmp(i))) Next i route(route_num) = "&H" & Hex(Val(rd)) route_num = route_num + 1 Text8.Text = route_num If route_num = 20 Then response = MsgBox("路径存储已达上限!是否重新规划?", vbYesNo + vbDefaultButton2 + vbInformation, "提示信息!") If response = vbYes Then route_num = 0 Else MsgBox "路径存储已完成,请点击发送按钮!", vbOKOnly + vbInformation, "提示信息!" End If End If ' MSComm1.Output = test End If End Sub 发送的 Private Sub CmdSend_Click() Dim bt(0 To 4) As Byte bt(0) = "&H" & "10" bt(1) = "&H" & "11" bt(2) = "&H" & "12" bt(3) = "&H" & "13" bt(4) = "&H" & "F6" If MSComm1.PortOpen = True Then If pc_draw_flag = True And OptSendHex.Value = True Then ' For i = 0 To 19 ' MSComm1.Output = "&H" & StrConv(Hex(route(i)), vbUpperCase) ' MSComm1.Output = bt MSComm1.Output = route(0) send_num = send_num + 1 Text7.Text = send_num ' Next i End If If Text2.Text = "" Or pc_draw_flag = False Then MsgBox "发送数据不能为空,请进行路径规划或输入字符!", vbOKOnly + vbInformation, "提示信息!" Else If OptSendHex.Value = True Then MSComm1.InputMode = comInputModeBinary MSComm1.InputLen = 0 Else MSComm1.InputMode = comInputModeText MSComm1.InputLen = 1 End If ' MSComm1.Output = Trim(Val(Text2.Text)) End If Else MsgBox "串口没有打开,请打开串口!", vbOKOnly + vbInformation, "提示信息!" End If route_num = 0 If pc_draw_flag = True And MSComm1.PortOpen = True And Text2.Text <> "" Then For i = 0 To 19 Text2.Text = Text2.Text & route(i) & " " If i = 19 Then Text2.Text = Text2.Text & Chr(13) & Chr(10) End If Next i End If End Sub 诸如此类形式的 bt(4) = "&H" & "F6"可以发送成功,检测也是好的,但是为什么我的生成的字符串 如输入255,显示的字符串&HFF,但是发送过去后不对,是把那个转换成了& H F F四个字符的ascii吗。。这是什么鬼。。
VS2010 MFC 的MSCOMM 控件 的Get_Input()函数读取不到缓存中的数据
各位高手好,小弟在使用VS2010 MFC 的MSCOMM 控件时出现了一个问题: 就是在OnComm函数里调用的Get_Input()函数读取不到缓存中的数据,经过验证,发现当接收区缓存数据不为0时程序能触发OnComm消息,可是当程序运行到Get_Input()函数时,OnComm()函数仿佛就直接从Get_Input()函数返回了,后面的代码也没有运行。同时,由于Get_Input()函数没有读取到缓存中的数据,因此即便我一次只给接收缓存发一个数据,程序也会不断调用OnComm()函数。请问可能的原因是什么? 初始化代码如下: m_MSComm.Create(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1); if(m_MSComm.get_PortOpen()) m_MSComm.put_PortOpen(FALSE); m_MSComm.put_CommPort(15); //choose port 3 CString str; if(!m_MSComm.get_PortOpen()){ m_MSComm.put_PortOpen(TRUE); } else AfxMessageBox("cannot open serial port!"); m_MSComm.put_InBufferCount(0); m_MSComm.put_OutBufferCount(0); m_MSComm.put_Settings("9600,n,8,1"); m_MSComm.put_InputMode(1); m_MSComm.put_RThreshold(1); m_MSComm.put_InputLen(0); OnComm函数代码如下 VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata[2048]; CString strtemp; CString str; if(m_MSComm.get_CommEvent()==2) { variant_inp = m_MSComm.get_Input(); m_MSComm.put_InBufferCount(0); safearray_inp = variant_inp; len = safearray_inp.GetOneDimSize(); for(k=0;k<len;k++){ safearray_inp.GetElement(&k,rxdata+k); } for(k=0;k<len;k++){ BYTE bt=*(char*)(rxdata+k); strtemp.Format("%c",bt); str+=strtemp; } m_MSComm.put_InBufferCount(0); MessageBox(str); }
使用MSComm,get_CommEvent值5(carrier detect 线变化),几个意思?
使用MSComm时,get_CommEvent值为5,说是“carrier detect 线变化”,这是几个意思啊?查了半天也没见有什么解释。求救!! 在下小白,诚心求教! 以下是代码 // 打开串口及串口设置 void CTandPDlg::OnBnClickedButtonCom1() { //TCHAR words[100] = {}; // TODO: 在此添加控件通知处理程序代码 if(mscomm1.get_PortOpen()) //如果串口是打开的,则行关闭串口 { mscomm1.put_PortOpen(FALSE); } mscomm1.put_CommPort(2); //选择COM2 mscomm1.put_InBufferSize(1024); //接收缓冲区 mscomm1.put_OutBufferSize(1024);//发送缓冲区 mscomm1.put_InputLen(0);//设置当前接收区数据长度为0,表示全部读取 mscomm1.put_InputMode(1);//以二进制方式读写数据 mscomm1.put_RThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件 mscomm1.put_Settings(_T("9600,n,8,1"));//波特率9600无检验位,8个数据位,1个停止位 if(!mscomm_ADAM1.get_PortOpen())//如果串口没有打开则打开 { mscomm_ADAM1.put_PortOpen(TRUE);//打开串口 AfxMessageBox(_T("The COM has connected")); CString ctrlWords("#01"); mscomm1.put_Output(COleVariant(ctrlWords));//发送数据 } else { mscomm1.put_OutBufferCount(0); AfxMessageBox(_T("串口1打开失败")); } } // 接收数据 void CTandPDlg::OnCommMscomm1() { // TODO: 在此处添加消息处理程序代码 FILE *file = fopen( "d:/id.txt","a" ); fprintf( file, "%d", mscomm1.get_CommEvent() ); fclose( file ); static unsigned int cnt=0; VARIANT variant_inp; COleSafeArray safearray_inp; long len,k; unsigned int data[1024]={0}; byte rxdata[1024]; //设置 BYTE 数组 CString strtemp; if(mscomm1.get_CommEvent()==2) //值为 2 表示接收缓冲区内有字符 { AfxMessageBox(_T("串口读事件")); cnt++; variant_inp=mscomm1.get_Input(); //读缓冲区消息 safearray_inp=variant_inp; ///变量转换 len=safearray_inp.GetOneDimSize(); //得到有效的数据长度 for(k=0;k<len;k++) { safearray_inp.GetElement(&k,rxdata+k); } strtemp.Format(_T("%x"),*(rxdata+k)); wchar_t *cBuffer = strtemp.GetBuffer( strtemp.GetLength() ); strtemp.ReleaseBuffer(); FILE *file = fopen( "d:/read.txt","w+" ); for( int i = 0; i<strtemp.GetLength(); ++i ) fprintf( file, "%c", cBuffer[i] ); fclose( file ); } UpdateData(FALSE); //更新编辑框内容 }
线程与mscomm控件问题
我是在做下位机向上位机传递数据,使用的mfc基于对话框的mscomm控件。需要动态实时显示曲线。我采用teechart控件来画曲线。mscomm控件有个Onmscomm()函数用来接收串口通信数据并存储起来。现在开辟了一个线程,在线程函数里实现对Onmscomm()接收到的数据的处理(此处为while(true)循环),再将处理的数据用来画图。但是现在调试时程序进入开辟的线程函数里,始终跳不出,无法进入Onmscomm()函数里(下位机有传数据),运行时会显示"0x0041172a"指令引用的"0x00000000"内存。该内存不能为"read"错误。这是怎么回事?要怎么解决呢?
MSComm控件串口接收数据存到txt中出现乱码
我在用C++做一个串口程序,用了MSComm控件,新手遇见了点问题,我用串口助手试了试我的程序,如果十六进制发送那么我接收的数据和串口助手发送的数据不一致,出现了乱码。我还想把我接收到的数据存储在txt文件中,可能是我数据类型没有转换对,txt文件里的接收数据也是乱码,不知道哪位能指点一下。 void CSendcomDlg::OnComm() { // TODO: Add your control notification handler code here VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k,counts; char *str; CString inputdata; CByteArray hexdata; //BYTE rxdata[2048]; CString strtemp; if(m_Com.GetCommEvent()==2) { variant_inp=m_Com.GetInput(); str=(char*)(unsigned char*)variant_inp.parray->pvData; safearray_inp=variant_inp; len=safearray_inp.GetOneDimSize(); for(k=0;k<len;k++) safearray_inp.GetElement(&k,rxdata+k); for(k=0;k<len;k++) { BYTE bt=*(char*)(rxdata+k); strtemp.Format("%c",bt); m_recv+=strtemp; } FILE *pFile = fopen("data.txt","a"); fwrite(str,1, strlen(str), pFile); fclose(pFile); } UpdateData(FALSE); }
VB在components中添加MSComm控件
VB中在components添加mscomm控件时为什么会显示“……could not be loaded”??求解。。。谢谢
MFC 程序,传感器里的数据无法读取到文本框里
写了一个MFC程序,想把传感器的数据通过MSComm 读取出来。现在的问题是程序不出错,但是数据显示不出来。代码如下: void CEmapDlg::OnCommMscomm1() { // TODO: 在此处添加消息处理程序代码 //printf("system is running here"); static unsigned int cnt = 0; VARIANT variant_inp; COleSafeArray safearray_inp; long len,k; unsigned int data[1024]={0}; byte rxdata[1024];//set byte array CString strtemp; if(m_mscomm.get_CommEvent()==2)//value is 2 when there is byte data in receive buffer { cnt++; variant_inp = m_mscomm.get_Input();//read message from buffer safearray_inp = variant_inp; //data change format len = safearray_inp.GetOneDimSize();//get the valid length of data for(k=0;k<len;k++) { safearray_inp.GetElement(&k,rxdata+k);//data format change to byte array } for(k=0;k<len;k++)//change format from array to CString { strtemp.Format(_T("%x"),*(rxdata+k)); m_EditReceive+=strtemp; CString temp=_T("\r\n"); m_EditReceive+=temp; } } UpdateData(FALSE); } 调试截图![图片说明](https://img-ask.csdn.net/upload/201503/09/1425894173_459767.jpg)
windows7下调用MSCOMM32.OCX控件失败
**目的:** 在JSP页面中调用MSCOMM32.OCX控件处理串口打印,打印机用的是EPSON TM-T81小票打印机,在XP中通过IE访问调试通过,可以正常打印,在win7下打印失败,现希望在win7下可以正常打印 **已处理的问题** - MSCOMM32.OCX已拷贝至C:\Windows\SysWOW64下 - 已在C:\Windows\SysWOW64下执行 regsvr32 MSCOMM32.OCX注册成功 - 已在注册表注入如下内容 [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}] [-HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905] [HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905] @="kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun" **代码处理** <!--OCX控件调用--> <OBJECT id="MSComm1" CLASSID="clsid:648A5600-2C6E-101B-82B6-000000000014" codebase="MSCOMM32.OCX" type="application/x-oleobject" style="display:none;"> <PARAM NAME="CommPort" VALUE="1"/> <PARAM NAME="DataBits" VALUE="8"/> <PARAM NAME="StopBits" VALUE="1"/> <PARAM NAME="BaudRate" VALUE="19200"/> <PARAM NAME="Settings" VALUE="19200,N,8,1"/> <PARAM NAME="RTSEnable" VALUE="1"/> <PARAM NAME="DTREnable" VALUE="1"/> <PARAM NAME="Handshaking" VALUE="0"/> <PARAM NAME="NullDiscard" VALUE="0"/> <PARAM NAME="ParityReplace" VALUE="?"/> <PARAM NAME="EOFEnable" VALUE="0"/> <PARAM NAME="InputMode" VALUE="0"/> <PARAM NAME="InBufferSize" VALUE="1024"/> <PARAM NAME="InputLen" VALUE="0"/> <PARAM NAME="OutBufferSize" VALUE="512"/> <PARAM NAME="SThreshold" VALUE="0"/> <PARAM NAME="RThreshold" VALUE="1"/> </OBJECT> //js调用 alert(MSComm1.PortOpen); //undefined,XP下为true **求解** ???
VB串口编程--测量程序
我需要编写一个RS232串口测量程序 设备是一台工业用实时检测仪,用于检测微小形变、位移,测量精度为0.001mm,测量最大值为100mm。 数据帧格式: RTU模式 通信参数:波特率38400 数据帧:1个起始位,8个数据位,2个停止位。 测量仪通过四路集线器连接com1连接电脑,需要通过主机发送8个字节查询命令,集线器响应返回21个字节数据。 主机查询命令:80 03 00 00 00 08 5A 1D 集线器响应:80 03 10 xx xx xx xx yy yy yy yy zz zz zz zz ww ww ww ww NN NN 响应数据中,x、y、z、w部分为4个测量数据,我只需要第一个即x部分。每个测量数据为4个字节,第一个字节为符号位,代表正负号,第3、4字节为16进制测量数据。 测量数据转换为10进制后再除以1000即为实际测量数据。 以下我参考串口调试助手编写的代码,但是尝试多次还是达不到我的目的: 现在初始程序界面如下图,在完整版中,我希望实现: 界面只保留 数据1-4 这一块,16进制和字节长度,我并不需要。 程序功能,按下键盘 空格键,测量一次数据,返回10进制实际数据值,显示在text1中,第二次按下空格键,测量值显示在text2中,依次类推......每4次一个循环。 ![图片说明](https://img-ask.csdn.net/upload/201703/27/1490579882_21915.png) ``` Option Explicit Dim a As Integer Dim BytReceived() As Byte Const Str_Send As String = "8003000000085A1D" Dim strData As String Dim lenInput As Integer Private Sub cmdClear_Click() strData = "" RichTextBox1 = "" TxtSend = "" End Sub Private Sub Form_KeyPress(KeyAscii As Integer) '16进制发送 If KeyAscii = 32 Then Dim sj() As Byte Dim i As Integer If Len(Str_Send) Mod 2 = 0 And Len(Str_Send) <> 0 Then '检验16进制字符串长 ReDim sj(Len(Str_Send) / 2 - 1) For i = 0 To Len(Str_Send) - 1 Step 2 sj(i / 2) = Val("&H" & Mid(Str_Send, i + 1, 2)) Next If MSComm1.PortOpen = True Then MSComm1.Output = sj End If Else MsgBox ("格式不对!") End If End If End Sub '字符串表示的十六进制数据转化为相应的字节串,返回转化后的字节数 Private Sub Form_Load() MSComm1.Settings = "38400,n,8,2" MSComm1.InputMode = comInputModeBinary '采用二进制传输 MSComm1.InBufferCount = 0 '清空接受缓冲区 MSComm1.OutBufferCount = 0 '清空传输缓冲区 MSComm1.RThreshold = 1 '产生MSComm事件 MSComm1.InBufferSize = 1024 RichTextBox1.Text = "" Text2 = "" If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End Sub Private Sub MSComm1_OnComm() '接收数据 Dim strBuff As String Select Case MSComm1.CommEvent Case 2 MSComm1.InputLen = 0 strBuff = MSComm1.Input BytReceived() = strBuff ReceiveData lenInput = Len(strData) Text2 = lenInput \ 2 '数据处理代码 End Select End Sub Public Function ReceiveData() '接收数据处理为16进制 Dim i As Integer For i = 0 To UBound(BytReceived) If Len(Hex(BytReceived(i))) = 1 Then strData = strData & "0" & Hex(BytReceived(i)) Else strData = strData & Hex(BytReceived(i)) End If Next RichTextBox1.Text = strData End Function ```
JS调用MSComm控件的问题
近期做的一个项目需要在页面调用串口通信,于是选择了使用mscomm32这个控件。 控件的安装注册都没问题,按照教程调试时发现了2个问题,希望有大神帮忙解答一下: 1.JS没有所谓的字节数组,不知道如何将16进制的字节数组发给串口; 2.控件的oncomm事件只有1,也就是发送数据事件能触发。当我试图接收数据时oncomm事件2始终无法触发。 其他的状态为0,可是关于这个控件没有找到oncomm事件为0的描述。 ---------------------------------------------------------------------------- 多方查找求助,看到一个比较有用的猜测方向:因为com口无法识别我发出去的读取数据指令,所以无法触发oncomm事件了。 小弟不才,串口通信也是因为项目要用到所以才开始了解的。对于很多都不大懂,希望有大神来帮帮忙,新人没有多的东西能悬赏了,全部家当在这里了。。。
关于MSComm1_OnComm事件中Case comEvReceive问题
大家好, MSComm1_OnComm事件中Case comEvReceive时,非要在comEvReceive后面加个数字才能收到串口发过来的字符,比如Case comEvReceive1或Case comEvReceive22,不加数字就收不到,我的是WIN7系统,奇怪了,请问怎么回事?程序如下(简单测试的): ``` Private Sub Command1_Click() MSComm1.Output = Text1.Text End Sub Private Sub Command2_Click() MSComm2.Output = Text2.Text End Sub Private Sub Form_Load() With MSComm1 .Settings = "19200,n,8,1" .CommPort = 5 .InputMode = comInputModeText .InputLen = 0 .SThreshold = 1 .RThreshold = 1 .OutBufferCount = 0 .InBufferCount = 0 If Not .PortOpen Then .PortOpen = True End With With MSComm2 .Settings = "19200,n,8,1" .CommPort = 6 .InputMode = comInputModeText .InputLen = 0 .SThreshold = 1 .RThreshold = 1 .OutBufferCount = 0 .InBufferCount = 0 If Not .PortOpen Then .PortOpen = True End With End Sub Private Sub MSComm1_OnComm() Select Case CommEvent Case comEvReceive111 Text1 = Text1 + MSComm1.Input End Select End Sub Private Sub MSComm2_OnComm() Select Case CommEvent Case comEvReceive111 Text2 = Text2 + MSComm2.Input End Select End Sub ``` 我好像没有悬赏分了,不知道有没有人帮我解答,5555555~~~
mscomm32.ocx 创建问题
目前 在 window7 ,windows8 中64位注册mscomm32.ocx 然后在网页中 使用 var msc = new ActiveXObject("MSCOMMLib.MSComm.1");可以正确创建activex控件 但是 在xp系统中 同样注册 (文件放置在c:\windows\system32下),然后通过regsvr32 mscomm32.ocx进行注册 提示成功 ,然后更改ie浏览器的安全级别 所有的activexobject相关配置全部设置成 ‘启用' 重启浏览器后发现无法创建activeXobject控件 提示: 服务器 automation 无法创建对象 接下来将测试网站添加到ie浏览器'受信任网站' 同样把受信任网站安全配置activexobject 也设置成全部 ’启用‘ 还是无法创建activexobject控件,诸位大神,还望解惑!
MSComm控件的输入缓冲区如何设置大小才合理
我在做一个串口。要把罗盘仪的数据读出来,为了保证数据全部读出来,我的MSComm控件的输入缓冲区设置的越大越好吗,默认是1024,最大是多少。
急求,大家好,我是PB软件的新手,在使用MSCOMM控件编写的时候遇到问题
在使用MSCOMM控件编写oncomm程序的时候,显示错误:coo31:syntax error string Is_input,Out_input choose case Ole_MSC.object.commevent case 2 //CommEvent属性为CommEvReceive Ole_MSC.object.InputLen=10000 //读入缓冲区中的数据长度 Is_input=Ole_MSC.object.Input //从接收缓冲区读取群补数据,写入字符串变量Is_input
如何用在基于MFC的CListView加入MSComm
因为一般的Dlg窗口能直接添加mscomm控件,但是在CListView的MainFrame里没法添加任何控件。。。。本人初学,大神们多指教
关于MScomm里面的.GetCommEvent()函数
使用MScomm时候 GetCommEvent()的值总是6,而不是数字2,怎么回事啊?![图片说明](https://img-ask.csdn.net/upload/201503/17/1426573284_759385.jpg)
VB通过MSC控件接收数据全为0
使用VB的MSC控件,实现与单片机之间数据的接收发送,为什么接收回来的数据全是0,接收的是18个数,用二进制接收,转换成16进制后,显示在文本框text1,请帮忙看一下程序哪里有问题。 还有就是读数据的时候老显示读comm设备有误,我改一下RThre的值,它又能正常显示了 Private Sub Command3_click() Dim ReceiveArr() As Byte Dim receivedata As String Dim counter As Integer Dim i As Integer Dim s As String Dim a(18) As Variant MSComm1.InputMode = comInputModeText MSComm1.InputLen = 0 receivedata = "" If (MSComm1.InBufferCount > 0) Then counter = MSComm1.InBufferCount ReceiveArr = MSComm1.Input For i = 0 To (counter - 1) Step 1 ReDim ReceiveArr(i) If ReceiveArr(i) < 16 Then receivedata = receivedata & "0" + Hex(ReceiveArr(i)) & Space(1) Else receivedata = receivedata & Hex(ReceiveArr(i)) & Space(1) End If s = receivedata text1.Text=s
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
相关热词 c# 时间比天数 c# oracle查询 c# 主动推送 事件 c# java 属性 c# 控制台 窗体 c# 静态类存值 c#矢量作图 c#窗体调用外部程式 c# enum是否合法 c# 如何卸载引用
立即提问