刚刚完成了一个关于氦检的项目,虽然只是做的用户界面,但是也用到一些之前没有用到的
serialPort控件是用来跟COM口进行连接的,用在接在CON口的一起上,进行数据传输,这里我用COM口连接的是扫码枪,
private void button1_Click(object sender, EventArgs e)
{
this.serialPort1.PortName = "COM1";//设置串口号
this.serialPort1.BaudRate = 9600;//设置波特率
this.serialPort1.Open();//打开串口
MessageBox.Show("串口打开!");
}
需要设置他的串口号,串口号可在我的电脑属性里面查到,波特率一般的设定9600根据硬件的要求来。
在使用条码枪前需要先打开串口,然后在在用条码枪扫描条码就可以,一般得到数据分为每隔一段时间读取一次,和每当使用这个串口的时候(在这里就是使用条码枪的时候)触发 ,在serialPort控件里的serialPort1_DataReceived方法就可以实现这一要求,读取从条码枪获得的数据方法:
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
serialPort1.Encoding = Encoding.GetEncoding("GB2312");
string str = serialPort1.ReadExisting().ToString();//得到从串口传过来的数据
serialPort1.DiscardInBuffer();//清空缓存
//必须要加不然str传不进去线程委托
this.textBox2.Invoke(new Action(delegate
{
this.textBox2.Text = str;
}));
}
这里需要注意的时,在这个事件里面如果 需要给控件赋值,必须调用这个控件的 Invoke方法,因为线程的问题,不然就会报错。
serialPort控件暂时就这些,下面是关于INI文件的创建,读取,写入
INI文件必须先要加载一个类,这个类文件在我的下载里面,名字是INIClass.cs
在这个类里面已经写好了相应的方法,我这就直接写怎么使用了
INI文件的创建只要给他写入的时候如果没有文件,他就会自动创建一个INI文件,名字跟内容都可在写入的里面设置
INIClass cIni_one = new INIClass(Directory.GetCurrentDirectory() + "\\TXM3.ini");//读取指定位置的INI文件
string str_one = "1";//INI文件的内容的模块标签
cIni_one.IniWriteValue(str_one, "value", "AB123456789");//写入INI文件一个键对应一个值
cIni_one.IniWriteValue(str_one, "value_name", "空调一");//写入INI文件一个键对应一个值
str_one = "2";//INI文件的内容的模块标签
cIni_one.IniWriteValue(str_one, "value", "AB987654321");//写入INI文件一个键对应一个值
cIni_one.IniWriteValue(str_one, "value_name", "空调二");//写入INI文件一个键对应一个值
这里边 Directory.GetCurrentDirectory()方法是获得当前位置返回一个string,当前位置就是在bin文件夹——》Debug文件夹里面,也就是程序生成的EXE文件的位置,这里就是将文件的地址通过INIClass的构造方法将值设定好。其他的就按照这个格式来写,生成之后去看一下就能够立马明白这边的模块标签等的意义是什么了。
INI文件的读取方法
INIClass cIni = new INIClass(Directory.GetCurrentDirectory() + "\\TXM3.ini");//读取指定位置的INI文件
string str = "1";//INI文件的内容的模块标签
MessageBox.Show(cIni.IniReadValue(str, "value").ToString());//读取对应模块里的对应键的值
MessageBox.Show(cIni.IniReadValue(str, "value_name").ToString());//读取对应模块里的对应键的值
读取的方法跟写入的方法差不多,整个不难,我在用过INI 文件的时候,感觉这就像个键值对集合,用起来挺方便简单的,特别是在传输一些数据的时候,我设定个时间控件去读取,基本就可以了