mfc 如何获取字符串中的16进制数据

mfc 如何获取字符串中的16进制数据,如字符串“0x123F”或"123F",获取16进制数据0x123F

4个回答

Tiger_Zhao
Tiger_Zhao 回复weifengzc: 解析字符串首先要定下规则,什么样的格式才算“16进制数据”,然后才能决定算法。如果没规则,随便给个字符串 "1234567890abcdefghijk",怎么提取?天晓得!
接近 5 年之前 回复
weifengzc
weifengzc 谢谢您能回答我的问题,我仅是想提取字符串中的数字,不是数据转换
接近 5 年之前 回复

这种算法只能针对特殊的格式字符串吧,不能做到万能的算法。
你这种需求你肯定知道字符串的大致格式,那么你就只有根据你的需求来匹配16进制的。
比如你可以搜索0x开头的,然后在后面继续匹配。

先读取字符串,然后根据你的格式要求,对应的转换为对应的进制,如stol()函数

使用std::stringstream类

CString csNumber("0x123F");
std::string strNumber(csNumber.GetString());

std::stringstream iss(strNumber);
int iNumber = 0x0;
iss>>std::hex>>iNumber;


数字转换成16进制字符

int iNumber = 0x123F;
std::stringstream oss;
oss<<"0x"<<std::hex<<iNumber;
std::string strNumber = oss.str();

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何从串口接收一段16进制数据中 读取需要的数据

串口接收到的16进制数据: 53 d4 ac 4e d4 ac 2d 30 30 30 b4 2e 36 b2 8d 0a 53 d4 ac 4e d4 ac 2d 30 30 30 b4 2e 36 b2 8d 0a 53 d4 ac 4e d4 ac 2d 30 30 30 b4 2e 36 b2 8d 0a . . . 串口接收到的ASCII数据: Ç k ‚ ‚ ‚ ¢ s ² ’ k u Í Š Ç k ‚ ‚ ‚ ¢ s ² ’ k S Ô ¬ N Ô ¬ - 0 0 0 ´ . 6 ²  S Ô ¬ N Ô ¬ - 0 0 0 ´ . 6 ²  S Ô ¬ N Ô ¬ - 0 0 0 ´ . 6 ²  S Ô ¬ N Ô ¬ - 0 0 0 ´ . 6 ²  需要的数据: 2d 30 30 30 b4 2e 36 b2 ,ASCII显示就是:-0004.62 怎么取这段数据。

VC++/MFC 十六进制码与字符的转化

急!!!我输入“你好”点击按钮变成“C4 E3 BA C3 ”倒是可以实现; 但是我要在编辑框中输入 “C4 E3 BA C3”点击按钮如何才能变成“你好”? 请大家帮忙指点。多谢!![图片说明](https://img-ask.csdn.net/upload/201708/01/1501576847_387194.png)

MFC串口发送,待发送的数据转成16进制后出现乱码

做了一个串口助手,想实现十六进制发送,但是待发送的数据转成16进制后出现乱码 ``` void CMXC18083SDlg::OnBnClickedButton2()//“发送数据”单击事件 { //默认方式是十六进制手动发送 //TODO: 在此添加控件通知处理程序代码 CString temp; UpdateData(true); temp = m_strSend;//"发送"显示编辑框 temp = ChangeCharstr2Hexstr(temp);//十六进制发送 if (temp.GetLength())//发送编辑框有内容 { u2clas.WriteToPort((char*)temp.GetBuffer(temp.GetLength()), temp.GetLength()); UpdateData(false); } } char CMXC18083SDlg::CombineHexChar(char CharH, char CharL) { char result; CString temp; char result1; int num1; int num2; int num3; if (CharH >= '0' && CharH <= '9') result = (CharH - '0'); else if (CharH >= 'a'&& CharH <= 'f') result = (CharH - 'a' + 10); else if (CharH >= 'A'&& CharH <= 'F') result = (CharH - 'A' + 10); else result = 0; if (CharL >= '0' && CharL <= '9') result1 = (CharL - '0'); else if (CharL >= 'a' && CharL <= 'f') result1 = (CharL - 'a' + 10); else if (CharL >= 'A' && CharL <= 'F') result1 = (CharL - 'A' + 10); else result1 = 0; num1 = result; num2 = result1; num3 = num1 * 16 + num2; return (char)num3; } ``` ![这是我要发送的AA,CString类型的,两个字节](https://img-ask.csdn.net/upload/201908/29/1567080292_140193.png) ![这是我把AA转换成一个字节0XAA,对应的十进制170](https://img-ask.csdn.net/upload/201908/29/1567080337_314554.png) ![这个是转回去之后就变成乱码了,我想要的结果是0XAA算一个字节](https://img-ask.csdn.net/upload/201908/29/1567080521_426167.png) 大佬们求助!!!!!!!!!!谢谢大佬

UDP DatagramSocket 发送16进制数据

DatagramPacket 参数有 byte buf[] 数据, int length 数据长度,SocketAddress address 地址. 我使用DatagramPacket 发送String 0636170517412500ffddb1 数据到服务器上.因为DatagramPacket参数是byte[] . 所以将String.getBytes() . 通过DatagramSocket 发送。然后以抓包形式获取data 。data的值 与String的值不一致。 所以服务器没有返回数据 ![图片说明](https://img-ask.csdn.net/upload/201706/27/1498554530_565343.png) --------------- 这家公司自己的软件 抓包data 与String 是一致的,所以他们服务器有返回数据 请求 大神援助、![图片说明](https://img-ask.csdn.net/upload/201706/27/1498554492_702657.png)

MFC中CString转十六进制数可以吗???

如:一个 CString str1, //str1="0093" 怎么使它成为16进制的“0093”

将int转换为十六进制,然后用0填充以获取固定长度的String

<div class="post-text" itemprop="text"> <p>I'm having some issues on trying to convert an <code>int</code> to hex then, padding it with <code>0</code>s in order to get a <code>6 Characters String</code> which represents the hex number.</p> <p>So far, I tried the following:</p> <pre><code>intNumber := 12 hexNumber := strconv.FormatInt(intNumber, 16) //not working </code></pre> <p>And then I found out how to pad it with <code>0</code>s, using <code>%06d, number/string</code>. It makes all the strings 6 characters long.</p> <p><a href="https://play.golang.org/p/lEYcu-dfiM" rel="nofollow noreferrer">Here you can Find a Playground</a> which I set up to make some tests.</p> <p><strong>How can I achieve this in a efficient way?</strong> </p> <p>For any Clarifications on the question, just leave a comment below. Thanks In advance.</p> </div>

想在MFC下写一个读取bmp图片,并将图片转换成一串字符串,请问怎么实现

想读取电脑中的bmp图片,然后将图片转换成16进制或者是字符串类型的,看了下网上的教程,试了半天都没成功,不知道这个想法是不是可以实现

VS2010下MFC CSerialport类接收问题

在VS2010的MFC下,用CSerialPort类时遇到下位机发送命令后上位机接收不到(下位机发BBBB),但是用串口精灵可以收到,我采用的是龚建伟老师介绍的加消息响应方法接收,是收到一次处理一次,不知道为什么会这样,怎么解决?网上有说是存到缓存从缓存处理,窝子安在这种情况怎么更改呢?希望有系统的解决思路或方法,非常感谢!

VS2010 MFC高分求一个串口通讯问题的解决方案。

我遇到一个问题: windows 7 32位系统里用VSPD创建了一对互联的标准设置的虚拟串口3和4。 其中一个端口4连着一个被控制软件B。 我自己写的一个小软件A打开另外一个端口3,发送数据给这个端口3,另外一个软件收到数据后会回馈一个特殊字符ACK 06(00000110),我不关心有没有这个ACK信号,它可有可无,我只在意每次软件B都能稳定收到A的数据。 下面是我VC内com3初始化函数内的代码: 用的标准串口控件,mscomm.ocx ``` > try > { > m_Mscomm3.put_CommPort(3);//串口号 > } > catch (CException* e) > { > e->Delete(); > MessageBox("串口号设置有误!","提示"); > return; > } > > if ( !m_Mscomm3.get_PortOpen()) > { > try > { > m_Mscomm3.put_PortOpen( TRUE ); //打开串口 > } > catch (CException* e) > { > e->Delete(); > MessageBox("发送串口打开失败!","提示"); > return; > } > > } > CString strT; > strT="9600 ,n, 8, 1"; > m_Mscomm3.put_Settings(strT); > m_Mscomm3.put_InputMode( 1 ); > m_Mscomm3.put_RThreshold( 1 ); > m_Mscomm3.put_InputLen(0); > m_Mscomm3.get_Input(); ``` 发送到串口3的代码 if (m_Mscomm3.get_PortOpen()) { m_Mscomm3.put_Output(COleVariant(strText)); } //发送的数据格式是:02 ** ** ** ** ** **03 0D //*号代表ASCii的16进制代码每次只发十几个阿拉伯数字(30-39),02是STX,03是ETX,0D是CR(\r). 问题是:有的时候B只能接受到A的第一次发来的数据,有的时候能连续收到几次,只要出现一次收不到的情况,以后每次都收不到,只能重启软件B后才能再次收到(串口调试软件可以连续稳定收到数据)。完全没有规律,不稳定。但是软件B如果直接连接串口1上的其他硬件,可以稳定的接收数据。是不是我的虚拟串口和软件B哪里不兼容,设置有问题,大家给点建议,谢谢。一个问题内的分不能分开发,类似的问题我可以多开几个,给大家发分。

串口通信为什么偶尔会丢一个字节?

我用zedboard的板子与PC机通信,用 ``` xil__printf ``` 打印中文时偶尔会出现乱码,用ascii码进行对照,发现会丢一个字节,而且这个丢字节的位置几乎总是在最后一个中文字的首字节。 我的编码是GBK,通信协议115200, 8, n, 1 (8数据位,无校验位,1停止位)。 各位大侠有什么解法吗?

USB-HID发送指令霍尼韦尔扫码枪开启扫描?

c#代码,我dllImport以后,先用HidD_GetHidGuid获取霍尼韦尔扫码枪的GUID,然后CreateFile根据VID和PID创建句柄,用FileStream去READ扫码枪扫的码,但是我想给扫码枪发送指令开启后者关闭扫描的时候,用FileStream的Write的时候,无反应。我Write的buff是{0x16,0x54,0x0D},这样的入参有什么问题吗?我这个16进制用的是232串口的开启指令,USB-HID的指令有什么区别吗?

MFC 错误 LNK2001 无法解析的外部符号

// SerialTest3Dlg.h : 头文件 // #pragma once #include "afxwin.h" #include "mscomm2.h" #include "stdint.h" #include "stdafx.h" // CSerialTest3Dlg 对话框 class CSerialTest3Dlg : public CDialogEx { // 构造 public: CSerialTest3Dlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_SERIALTEST3_DIALOG }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: HICON m_hIcon; // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() private: CString m_EditReceive;//接收框 CString m_Editsend;//发送框 CComboBox m_comb1;//COM口下拉框 public: CComboBox m_comb2;//波特率下拉框 CMscomm2 m_mscom;//串口控件 afx_msg void OnBnClickedButtonOpen();//打开按钮 afx_msg void OnBnClickedButtonCleanup();//清楚按钮 afx_msg void OnBnClickedButtonClose();//关闭按钮 DECLARE_EVENTSINK_MAP() void OnCommMscomm1();//串口按钮(隐形) CEdit m_Edit; CString m_interpretingdata;//解析数据 afx_msg void OnBnClickedButton5();//发送按钮 }; typedef struct FPGA_INFO_REPORT { uint8_t bWorkMode; //当前工作模式0x00表示初始模式0x01表示扫频模式0x02表示闭环驱动和检测模式0x03表示开环驱动和检测模式0x04表示连续Q值计算模式 uint8_t bCheckMode; //当前检测类型0x01表示开环检测0x02表示闭环检测调试0x03表示闭环检测0x04表示正交校正模式 uint8_t bADMagTimes; //检测信号放大倍数 uint32_t dwSweepTime; //扫频完成时间,毫秒 float fSweepFreq; //扫频得到的谐振频率 float fSweepFreqAmpl; //扫频谐振频率对应的驱动反馈信号幅值 float fDriSignalFreq; //驱动信号频率 float fDriSignalAmpl; //驱动信号幅度 float fDriveFbAmpl; //驱动反馈信号幅度 float fDriveFbPhase; //驱动反馈信号相位 float fBalSignalAmpl; //力平衡信号幅度 float fBalSignalPhase; //力平衡信号相位 float fCheckSignalAmpl; //检测信号幅度 float fCheckSignalPhase; //检测信号相位 float fCheckSignalPalst; //角速度 }FPGA_INFO_REPORT1; // SerialTest3Dlg.cpp : 实现文件 // #include "stdafx.h" #include "SerialTest3.h" #include "SerialTest3Dlg.h" #include "afxdialogex.h" #include <stdlib.h> #include "parser.h" #include <string.h> #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_ABOUTBOX }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CSerialTest3Dlg 对话框 CSerialTest3Dlg::CSerialTest3Dlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_SERIALTEST3_DIALOG, pParent) , m_EditReceive(_T("")) , m_Editsend(_T("")) , m_interpretingdata(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CSerialTest3Dlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_Rev, m_EditReceive); DDX_Text(pDX, IDC_EDIT_Tev, m_Editsend); DDX_Control(pDX, IDC_COMBO2, m_comb1); DDX_Control(pDX, IDC_COMBO3, m_comb2); DDX_Control(pDX, IDC_MSCOMM2, m_mscom); DDX_Control(pDX, IDC_EDIT_Rev, m_Edit); DDX_Text(pDX, IDC_EDIT16, m_interpretingdata); } BEGIN_MESSAGE_MAP(CSerialTest3Dlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_OPEN, &CSerialTest3Dlg::OnBnClickedButtonOpen) ON_BN_CLICKED(IDC_BUTTON_CLEANUP, &CSerialTest3Dlg::OnBnClickedButtonCleanup) ON_BN_CLICKED(IDC_BUTTON_CLOSE, &CSerialTest3Dlg::OnBnClickedButtonClose) //ON_BN_CLICKED(IDC_BUTTON1, &CSerialTest3Dlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON5, &CSerialTest3Dlg::OnBnClickedButton5) END_MESSAGE_MAP() // CSerialTest3Dlg 消息处理程序 BOOL CSerialTest3Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 // 串口选择组合框 CString str; int i; for (i = 0; i < 5; i++) { str.Format(_T("com %d"), i + 1); m_comb1.InsertString(i, str); } m_comb1.SetCurSel(0);//预置COM口 // 波特率选择组合框 CString str1[] = { _T("4800"),_T("9600"),_T("19200"),_T("38400"),_T("43000"),_T("56000"),_T("57600"),_T("115200") }; for (int i = 0; i < 8; i++) { int judge_tf = m_comb2.AddString(str1[i]); if ((judge_tf == CB_ERR) || (judge_tf == CB_ERRSPACE)) MessageBox(_T("build baud error!")); } m_comb2.SetCurSel(7);//预置波特率为"115200" return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CSerialTest3Dlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CSerialTest3Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CSerialTest3Dlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CSerialTest3Dlg::OnBnClickedButtonOpen()//打开串口 按钮程序 { // TODO: 在此添加控件通知处理程序代码 CString str, str1, n; //定义字符串 GetDlgItemText(IDC_BUTTON_OPEN, str); CWnd *h1; h1 = GetDlgItem(IDC_BUTTON_OPEN); //指向控件的caption if (!m_mscom.get_PortOpen()) { m_comb2.GetLBText(m_comb2.GetCurSel(), str1);//取得所选的字符串,并存放在str1里面 str1 = str1 + ',' + 'n' + ',' + '8' + ',' + '1'; //这句话很关键 m_mscom.put_CommPort((m_comb1.GetCurSel() + 1)); //选择串口 m_mscom.put_InputMode(1); //设置输入方式为二进制方式 m_mscom.put_Settings(str1); //波特率为(波特率组合框)无校验,8数据位,1个停止位 m_mscom.put_InputLen(1024); //设置当前接收区数据长度为1024 m_mscom.put_RThreshold(1); //缓冲区一个字符引发事件 m_mscom.put_RTSEnable(1); //设置RT允许 m_mscom.put_PortOpen(true); //打开串口 if (m_mscom.get_PortOpen()) { str = _T("关闭串口"); UpdateData(true); h1->SetWindowText(str); //改变按钮名称为“关闭串口” } } else { m_mscom.put_PortOpen(false); if (str != _T("打开串口")) { str = _T("打开串口"); UpdateData(true); h1->SetWindowText(str); //改变按钮名称为打开串口 } } } void CSerialTest3Dlg::OnBnClickedButtonCleanup()//清除数据按钮 { // TODO: 在此添加控件通知处理程序代码 m_EditReceive = _T(""); //给接收编辑框发送空格符 UpdateData(false); //更新数据 } void CSerialTest3Dlg::OnBnClickedButtonClose()//退出按钮 { // TODO: 在此添加控件通知处理程序代码 m_EditReceive = _T(""); //给接收编辑框发送空格符 UpdateData(false); //更新数据 } BEGIN_EVENTSINK_MAP(CSerialTest3Dlg, CDialogEx) ON_EVENT(CSerialTest3Dlg, IDC_MSCOMM2, 1, CSerialTest3Dlg::OnCommMscomm1, VTS_NONE) END_EVENTSINK_MAP() //CString temp; void CSerialTest3Dlg::OnCommMscomm1()//串口控件(按钮) { // TODO: 在此处添加消息处理程序代码 if (m_mscom.get_CommEvent() == 2) { char str[2048] = { 0 }; long k; CString temp; VARIANT InputData = m_mscom.get_Input(); //读缓冲区 COleSafeArray fs; fs = InputData; //VARIANT型变量转换为COleSafeArray型变量 for (k = 0; k < fs.GetOneDimSize(); k++) { fs.GetElement(&k, str + k); //转换为BYTE型数组 temp.Format(L"%02X",(char*)(str + k));//输出显示16进制 m_EditReceive += temp; // 接收到数据显示在编辑框里面 } SetTimer(1,10,NULL); //延时10ms UpdateData(false); m_Edit.SetSel(-1, 1); this->SetDlgItemTextW(IDC_EDIT_Rev, m_EditReceive);//将接收框内容显示到最后位置 m_Edit.LineScroll(m_Edit.GetLineCount() - 1, 0);//将垂直滚动条滚动到最后一行 FPGA_INFO_REPORT1 info; memcpy(&info, str, sizeof(str)); CString str2; str2.Format(L"当前工作模式:%c\n", info.bWorkMode, "当前检测类型:%c\n", info.bCheckMode, "检测信号放大倍数:%c\n", info.bADMagTimes, "扫频完成时间:%c\n", info.dwSweepTime, "扫频得到的谐振频率:%f\n", info.fSweepFreq, "扫频谐振频率对应的驱动反馈信号幅值:%f\n", info.fSweepFreqAmpl, "驱动信号频率:%f\n", info.fDriSignalFreq, "驱动信号幅度:%f\n", info.fDriSignalAmpl, "驱动反馈信号幅度:%f\n", info.fDriveFbAmpl, "力平衡信号幅度:%f\n", info.fBalSignalAmpl, "力平衡信号相位:%f\n", info.fBalSignalPhase, "检测信号幅度:%f\n", info.fCheckSignalAmpl, "检测信号相位:%f\n", info.fCheckSignalPhase, "角速度:%f\n", info.fCheckSignalPalst); m_interpretingdata =str2; } } void CSerialTest3Dlg::OnBnClickedButton5() { // TODO: 在此添加控件通知处理程序代码 UpdateData(true); //更新控件数据 m_mscom.put_Output(COleVariant(m_Editsend));//把发送编辑框的数据发送出去 } 以上代码报错 :错误 LNK2001 无法解析的外部符号 "public: virtual struct CRuntimeClass * __thiscall CMscomm2::GetRuntimeClass(void)const " (?GetRuntimeClass@CMscomm2@@UBEPAUCRuntimeClass@@XZ) SerialTest3 C:\Users\LFY\Desktop\SerialTest3\SerialTest3\SerialTest3Dlg.obj 1 是什么原因

FX2N系列PLC通过编程口如何与上位机实现串口通信

新人,最近在写一个MFC的控制台,实现与PLC串口通信,以前写的是实现与avr单片机的通信。我按照三菱特有的通信格式编写,不知为啥一直无法实现,哪位前辈有这方面的经验吗?诚心求指点。 比如: 1.上位机发请求讯号(05H)给PLC,上位机只要负责把它发到串口缓冲区就可以吗? 2.在上位机收到PLC返回的确认信号(ACK)后,发后面的多字符帧命令码(02 45 31 30 34 30 30 34 30 32 37 42 30 30 03 41 43)这一串数据是可以一起一次性发送给PLC还是得一个一个单独发?也就是先发开始标识02H,再发操作命令.....发结束标志03H,发校验码? 3. 5 2 45 31 30......这些数据应该定义为什么类型呢?通信协议要求是16进制的ASCII形式,可以定义为unsigned char类型吗? 我用的是VC++ 谢谢~

在线程中使用SetBitmap报错Assert

MFC渣新手 求指点 想要实现的效果是 1.当recvFlag =Ture时,bitmap由红灯变绿灯。 控件是一个静态图控件,使用Setbitmap来设置图片。放在线程中循环检测 recvFlag参数来设置红绿灯。 2.CtrlList 显示实时接收的数据。如果在这个线程中,不添加bitmap的操作,通过传入的this对 ctrllist操作是没有问题的。 3.奇怪2个都是类中的控件,为什么一个可以一个不行。 4.查资料说要用 SetBitmap的原型函数,传入hWnd,但是不清楚该怎样做..... 求指点~~~~ ``` mThreadPrint = AfxBeginThread(ThreadProc_print, (LPVOID )this, //创建函数时将类的指针传入 THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); mThreadPrint->m_bAutoDelete = TRUE; mThreadPrint->ResumeThread(); UINT ThreadProc_print(LPVOID param) { CTunelDlg_0 *pDlg=(CTunelDlg_0 *)param; int comRow=0; while(1) { //if(recvFlag) if(1) { /* *pStatic 在主线程的CTunnelDlg_0 类中定义的一个Picture 控件; m_comList. 在主线程的CTunnelDlg_0 类中定义的一个CtrlList 空间的变量; 问题: 1.在线程中添加SetBitmap和 ModifyStytle函数会出现断言错误,调试了一下发现this指针是 CCC.. 不太清楚是否是也指针的意思; 2. 为什么同样是pDlg的变量,CtrlList的InserItem和SetItemText都没有问题。 注视Setbitmap之后,对CtrlList的操作时可以运行的。 */ //yanyan:加载通道状态图标 //CStatic *pStatic=(CStatic *)GetDlgItem(AfxGetMainWnd()->m_hWnd,IDC_RedGreen) ;//控件ID /* CBitmap bmpload_RED; bmpload_RED.LoadBitmap(IDB_BITMAP_RED); pStatic->ModifyStyle(0,SS_BITMAP); pStatic->SetBitmap(HBITMAP(bmpload_RED.Detach())); */ //pDlg->bmpload_GREEN.LoadBitmap(IDB_BITMAP_GREEN); //pDlg->pStatic->ModifyStyle(0,SS_BITMAP); /* 0913: */ pDlg->pStatic->SetBitmap(HBITMAP(pDlg->bmpload_GREEN.Detach())); //调试发现这里会出现空指针 //将LEUDataSrc中的数据转换为 字符串CString CString str; CString strData = ""; for (int i = 0; i < sizeof(LEUDataSrc); i++)//num是你数组里面元素的个数 { str.Format("%02x ",LEUDataSrc[i]);//每次提取出一个16进制数转为字符型 02x表示,不足2位的时候补足 2位 strData += str;//将转换好的字符串写入总的字符串 } pDlg->m_comList.InsertItem(comRow,"RX:"); //第一列显示Time pDlg->m_comList.SetItemText(comRow,1,strData); //第二列显示LEUData memset(LEUDataSrc,0,2048); //清空 LEUData数据 comRow++; } Sleep(100); } return 0; } ```

Dev-c++ 调试功能如何设置

1、在“工具”-》编译选项-》"Add following commands when calling complier"下面的编辑框里加上:-g3 2、在下面的"Add these commands to the linker command line" 下的编辑框上加上:-g3 3、转到programs页,把gcc行修改为:gcc.exe -D__DEBUG__ 4、把g++行修改为g++.exe -D__DEBUG__ ,点击ok。 这是我在网上搜索到的 设置后却出现这样的问题 ![图片说明](https://img-ask.csdn.net/upload/201506/18/1434592337_606836.png)

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

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

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

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Intellij IDEA 实用插件安利

1. 前言从2020 年 JVM 生态报告解读 可以看出Intellij IDEA 目前已经稳坐 Java IDE 头把交椅。而且统计得出付费用户已经超过了八成(国外统计)。IDEA 的...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

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

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

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

魂迁光刻,梦绕芯片,中芯国际终获ASML大型光刻机

据羊城晚报报道,近日中芯国际从荷兰进口的一台大型光刻机,顺利通过深圳出口加工区场站两道闸口进入厂区,中芯国际发表公告称该光刻机并非此前盛传的EUV光刻机,主要用于企业复工复产后的生产线扩容。 我们知道EUV主要用于7nm及以下制程的芯片制造,光刻机作为集成电路制造中最关键的设备,对芯片制作工艺有着决定性的影响,被誉为“超精密制造技术皇冠上的明珠”,根据之前中芯国际的公报,目...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

百度工程师,获利10万,判刑3年!

所有一夜暴富的方法都写在刑法中,但总有人心存侥幸。这些年互联网犯罪高发,一些工程师高技术犯罪更是引发关注。这两天,一个百度运维工程师的案例传遍朋友圈。1...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

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

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

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

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

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

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

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

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

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

实时更新:计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年6月份最新版)

内容导航: 1、TIOBE排行榜 2、总榜(2020年6月份) 3、本月前三名 3.1、C 3.2、Java 3.3、Python 4、学习路线图 5、参考地址 1、TIOBE排行榜 TIOBE排行榜是根据全世界互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据。

阿里面试官让我用Zk(Zookeeper)实现分布式锁

他可能没想到,我当场手写出来了

终于,月薪过5万了!

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

​能让德国人放弃现金支付​,也没谁了

在新冠疫情中,德国人越来越多地选择在超市,加油站或其他商店付款时使用非接触式付款方式。德国信贷协会Deutschen Kreditwirtschaft (DK) 的一位发言人告诉德国新...

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

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

立即提问
相关内容推荐