首先:
创新互联-专业网站定制、快速模板网站建设、高性价比新邵网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式新邵网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖新邵地区。费用合理售后完善,十载实体公司更值得信赖。
textbox里没有显示,是因为SerialPort1和TextBox2不是同一线程创建的,需要跨线程操作。需要用到委托,这样才能显示出来。
其次:
我觉得用串口的接收数据事件更好一些。
下面代码供参考:
'----------------------
'串口接收数据事件,其实比用定时器更好,
'触发事件的条件可以自己在form_load中设置ReceivedBytesThreshold属性数值,默认为ReceivedBytesThreshold=1
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim strRecvData As String = ""
strRecvData = SerialPort1.ReadExisting
Call disPlayComData(strRecvData)
End Sub
Delegate Sub callback(ByVal strT As String) '定义委托
Sub showString(ByVal comdata As String) '显示结果
Me.TextBox1.Text = "结果:" comdata
End Sub
Sub disPlayComData(ByVal strTmp As String) '判定是否为跨线程
If Me.TextBox1.InvokeRequired Then
Dim d As New callback(AddressOf showString)
Me.Invoke(d, New Object() {strTmp})
Else
Me.TextBox1.Text = strTmp
End If
End Sub
程序的兼容模式设置保存在注册表下。
在 HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Layers/ 下新建一个键值,键值名称是可执行程序文件的完全路径,数据类型为reg_sz,数据数值为兼容的操作系统代码。
代码对照如下:
Windows NT 4.0 (Service Pack 5):NT4SP5
windows 95:WIN95
windows 98 or windows ME:WIN98
windows 2000:WIN2000
windows xp:WINXP
windows 2003:WIN2003
比如你要以WinXP的兼容模式运行 C:\1.exe,那么就是
HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Layers 在这下面新建一个键,名为"C:\starcraft.exe”,再在这个键下面创建一个reg_sz类型的数据,数据值为WINXP即可。
用VB.NET操作注册表这个你可以百度到很多了。
如果你读懂了转换就不难,比如第一个提取年信息的。
五分钟数据样本如下:
66 00 3F 02 66 66 26 41 66 66 26 41 B8 1E 25 41
85 EB 25 41 C0 05 56 49 4E 03 00 00 00 00 00 00
现已知每4个字节代表一段含义,分别是时间,开盘价,最高价,最低价,收盘价,成交额,成交量。
年——66 00 16进制转换为10进制是26112 26112/2048+2004=2016
将循环放入到另一个线程中
ThreadStart ts = new ThreadStart(delegate() {
//do something
});
Thread t = new Thread(ts);
t.Start();
//going do something