(求救)vc6.0与单片机串口通信数据处理
在VC++6.0环境下实现小区车辆出入信息采集系统上位机的开发.此系统能接受到出入小区车辆的信息,主要包括出入时间,出入状态,车型,车牌号,车主代码.如果不是小区车辆还能实现报警功能.
我是用CSerialPort类来进行串行通信的.
加入函数OnComm()的实现,并在其中完成对接受到字符的处理,"时间"是在 LONG CCarMSDlg::OnComm(WPARAM ch, LPARAM port){}一触发后显示当前系统的时间.其余:状态,车型,车牌号,车主代码是接受硬件的数据,然后对应显示在相应的框内:以下是小妹自己写的,请高手指教
状态一个字节(如1),车型2位数(如A1),车牌号7位数(如粤A25263)车主代码12(198402260012)
LONG CCarMSDlg::OnComm(WPARAM ch, LPARAM port)
{
VARIANT m_input1;
ColeSafeArray m_input2;
Long length,i;
BYTE data[1024];
Cstring str;
int b;
if(m_Comm.GetCommEvent()= =2)//接收缓冲区内有字符
{
m_input1=m_Comm.Getinput();//读取缓冲区内的数据
m_input2=m_input1;//将VARIANT型变量转换为ColeSafeArray型变量
length=m_input2.GetOneDimSize();//确定数据长度
for(i=0;i<length;++)
m_input2.GetElement(&i,data+i);//将数据转换为BYTE型数组
for(i=0;i<length;i++)//将数组转换为Cstring型变量
{
char a=* (char *)(data+i);
str.Format("%c",a);
count=m_comm.GetInBufferCount( );
m_comm.SetInputLen(count); //利用Input接收字符数为count
temp=m_comm.GetInput( ); //接收字符
b=count;
for(b=1;b<count;b++)
{
if(b=1)
{
m_state.Empty( );
m_state+=temp.bsteVal;//赋值给到"状态"编辑框
}
if(b=2)
{
m_cartype.Empty( );
m_cartype+=temp.bsteVal;//赋值给到"车型"编辑框
}
if(b=4)
{
m_carnum.Empty( );
m_carnum+=temp.bsteVal;//赋值给到"车牌号"编辑框
}
if(b=12)
{
m_usernum.Empty( );
m_usernum+=temp.bsteVal;//赋值给到"车主代码"编辑框
}
}
}
UpdataData(FALSE);//更新编辑框内容
return 0;
}
获取系统时间的不知道怎么写?希望指教,多谢多谢!!!!!
问题点数:20、回复次数:13Top
1 楼happyna()回复于 2006-05-03 10:53:17 得分 0
问题二:然后接受数据后,对比ACESS数据表"车辆信息"预存好的信息,只要对比车主代码,如果数据表内没有,则警告:不是小区车辆.如果是表内数据,则把时间,状态,车型,车牌号,车主代码一起存入另一个ACESS数据表"车辆出入信息".Top
2 楼lfchen(一条晚起的虫--床上用品[家纺]专卖)回复于 2006-05-03 11:19:19 得分 0
系统时间:GetLocalTime()或者CTime::GetCurrentTime(),具体看MSDN。
串口部分没什么问题。
问题二:数据库操作,搜索一下ado或者odbc,论坛中已经有很多了。Top
3 楼happyna()回复于 2006-05-03 17:37:46 得分 0
多谢这位大哥,但由于我学的太差,无法根据类似的去修改,希望好心人能帮小妹一把.
把具体的代码写下.呵呵!!!!!Top
4 楼happyna()回复于 2006-05-03 17:48:25 得分 0
获取系统时间也是在OnComm()内触发,然后赋值给m_time显示.那么这段代码加到那里,而且上面的那个
LONG CCarMSDlg::OnComm(WPARAM ch, LPARAM port)
{
}
内编译时出现好多问题,不知从何改
D:\CarMS\CarMSDlg.cpp(190) : error C2065: 'ColeSafeArray' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(190) : error C2146: syntax error : missing ';' before identifier 'm_input2'
D:\CarMS\CarMSDlg.cpp(190) : error C2065: 'm_input2' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(191) : error C2065: 'Long' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(191) : error C2146: syntax error : missing ';' before identifier 'length'
D:\CarMS\CarMSDlg.cpp(191) : error C2065: 'length' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(191) : error C2065: 'i' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(193) : error C2065: 'Cstring' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(193) : error C2146: syntax error : missing ';' before identifier 'str'
D:\CarMS\CarMSDlg.cpp(193) : error C2065: 'str' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(195) : error C2065: 'm_Comm' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(195) : error C2228: left of '.GetCommEvent' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(195) : error C2059: syntax error : '='
D:\CarMS\CarMSDlg.cpp(196) : error C2143: syntax error : missing ';' before '{'
D:\CarMS\CarMSDlg.cpp(197) : error C2228: left of '.Getinput' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(198) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'struct tagVARIANT' (or there is no acceptable conversion)
D:\CarMS\CarMSDlg.cpp(199) : error C2228: left of '.GetOneDimSize' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(200) : error C2059: syntax error : ')'
D:\CarMS\CarMSDlg.cpp(205) : error C2228: left of '.Format' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(206) : error C2065: 'count' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(206) : error C2065: 'm_comm' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(206) : error C2228: left of '.GetInBufferCount' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(207) : error C2228: left of '.SetInputLen' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(208) : error C2065: 'temp' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(208) : error C2228: left of '.GetInput' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(215) : error C2228: left of '.bsteVal' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(220) : error C2228: left of '.bsteVal' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(225) : error C2228: left of '.bsteVal' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(230) : error C2228: left of '.bsteVal' must have class/struct/union type
D:\CarMS\CarMSDlg.cpp(234) : error C2065: 'UpdataData' : undeclared identifier
D:\CarMS\CarMSDlg.cpp(239) : error C2601: 'OnButtonOpen' : local function definitions are illegal
D:\CarMS\CarMSDlg.cpp(257) : error C2601: 'OnButtonClose' : local function definitions are illegal
D:\CarMS\CarMSDlg.cpp(264) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
Top
5 楼happyna()回复于 2006-05-03 18:06:48 得分 0
这是我毕业设计的课题,小妹是学通信工程,但是不幸的是选毕业设计课题时抽签抽到用VC编写小区车辆出入信息采集系统上位机的开发.
我从来没学过VC.我搞了两个月,还是没什么成就!就搞了一点界面的东西出来,底层实现的数据始终不知怎么写
哎!希望那位大哥可以帮小妹这个忙,让我顺利通过毕业.我的QQ:103123898希望能祥谈.Top
6 楼roscoe(草上飞)回复于 2006-05-03 18:25:32 得分 0
没见过这么粗心的MM,肯本上都是写错了,少写之类Top
7 楼happyna()回复于 2006-05-03 18:54:31 得分 0
接受批评!我看书就走马观花.那请楼上大哥指教哟Top
8 楼lfchen(一条晚起的虫--床上用品[家纺]专卖)回复于 2006-05-03 19:16:50 得分 0
晕啊,粗粗一看
ColeSafeArray ---> COleSafeArray, Long ---> long, Cstring ---> CString,
UpdataData ---> UpdateData
m_Comm 或者 m_comm的定义在哪里?Top
9 楼happyna()回复于 2006-05-05 14:40:10 得分 0
上面的大哥们,你们行行好?告诉我怎么做啊?Top
10 楼lfchen(一条晚起的虫--床上用品[家纺]专卖)回复于 2006-05-05 15:13:19 得分 20
奇怪,不能给楼主发短消息,被拉入黑名单了?Top
11 楼happyna()回复于 2006-05-05 16:02:17 得分 0
不会吧!Top
12 楼happyna()回复于 2006-05-05 16:02:43 得分 0
我一直在啊Top
13 楼happyna()回复于 2006-05-05 16:29:37 得分 0
没有 啊!我没拉谁进黑名单啊?我发了短信给你,怎么没收到呢?Top




