本软件系统是通过RS232串口通信,将单片机内部存储的人员计数信息(包括日期,时间,温度,进出人数,剩余人数)读入到计算机,进行管理。
本人是 微电子方向学生,首次编写应用程序,编写方法,方式,语言,效率等方面必有不足之处,望计算机相关专业及各位高手雅正。QQ:147664928
此软件设计的完成主要包括以下几个方面并给出相应的代码:
1、MSComm控件:vs2005 中并没有这个控件,需要手动添加注册。(vb.6.0中有这个控件可以直接调用)
程序:这里没有设置 端口和 Setting属性 这两个参数是从FORM2(系统设置中获得)
private void InitComPort()
{
try
{
if (axMSComm1.PortOpen)
{
axMSComm1.PortOpen = false;
}
else
{
axMSComm1.InputLen = 0;
axMSComm1.InBufferSize = 1024;
axMSComm1.RThreshold = 1;
axMSComm1.Handshaking = MSCommLib.HandshakeConstants.comNone;
axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeText; //文本
axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary; //二进制
axMSComm1.OnComm += new EventHandler(axMSComm1_OnComm); //执行一个OnComm事件
axMSComm1.PortOpen = true; //打开串口
}
}
catch
{
MessageBox.Show("请确认端口设置是否正确","提示");
system_setting.Enabled = true ;
}
}
2.将串口读取到得数据 显示到LISTVIEW中 发送的数据格式为 每个数组记录着日期,星期,时间,温度进去人数,出去人数,剩余人数 并已“#”号结束,次为一行信息。
private void axMSComm1_OnComm(object sender, System.EventArgs e)
{
object objIn;
string rd = "";
objIn = axMSComm1.Input;
rd = System.Text.Encoding.UTF8.GetString((byte[])objIn);//取到的一个数据转化字符串
if (rd == "&")
{
ListViewItem lvt = new ListViewItem();
string[] arrystr = Regex.Split(strr, @"/s+");
if (Kread == false)
{
lvt.SubItems[0].Text = arrystr[0];
lvt.SubItems.Add(arrystr[1]);
lvt.SubItems.Add(arrystr[2]);
lvt.SubItems.Add(arrystr[3]);
lvt.SubItems.Add(arrystr[4]);
lvt.SubItems.Add(arrystr[5]);
lvt.SubItems.Add(arrystr[6]);
listView1.Items.Add