小弟是个新手现在用mfc做个串口发送的程序,程序是这样的,从edit控件输入字符,然后放到一个数组里,通过串口发送出去,请前辈们帮忙
CString str;
unsigned char send[1024];
GetDlgItem(IDC_AddEdit)->GetWindowText(str);
到这里就做不下去了,控件的内容也已经获得了
CString str;
unsigned char send[1024];
GetDlgItem(IDC_AddEdit)->GetWindowText(str);
到这里就做不下去了,控件的内容也已经获得了
CString str;unsigned char send[1024];
int length = GetDlgItem(IDC_AddEdit)->GetWindowText((LPTSTR)send, sizeof(send)/sizeof(TCHAR))*sizeof(TCHAR);
send[0] = D6
send[1] = D0
send[2] = B9
send[3] = FA 是这样的吗?这样的话,发送出去的是4个字节了是吗?现在我的通讯协议是这样的,要发送一串数据出去,这串数据包含起始,数据长度,命令,数据N(就是编辑框里的数据),CRC校验(根据发送的这串数据计算的来的两个字节数据),结束我的目的是把控件里的数据取出,得出字节数,然后再赋给另一个数组(这个数组里有数据长度,CRC等),然后通过串口发送出去
新手,碰到的问题比较多,努力中,,,前辈们帮忙!!!
unsigned char send[1024];
int length = GetDlgItem(IDC_AddEdit)->GetWindowText((LPTSTR)send, sizeof(send)/sizeof(TCHAR))*sizeof(TCHAR);
按照3楼的做法,是可以了,但是有个问题来了,我向在发送的时候,如果输入的是中文,那么就发送中文内码,如果输入的是英文直接发送ASCII码即可我试着使用3楼的方法,如果输入中文可以,如果输入的是英文的话,同样也是占用两个字节,第一个字节是该字符的ASCII码,第二个字节是个0,不符合下位机的要求
你的是Unicode工程,有两个办法
1、工程改为多字节
或者
2、将得到的字符串用WideCharToMultiByte()转为多字节。具体用法查msdn,有例子。
再个你既然使用MFC,可以将char改为TCHAR,这样的话,如果你使用的是UNICODE字符集的话编译时会自动转化为双字节存储,如果你使用的是ASNIC编码,编译时会自动转化为单字节存储方式!当然在对方接收到这些数据时,这些数据都是一个字符占两个字节,如果你需要还原为ASCII码的话肯定要转化下了,有专门的函数,8楼已经提到了,这就已经很简单了!