資源簡介
C# 編寫的 藍牙GPS定位軟件 可通過藍牙GPS 校準時間
代碼片段和文件信息
using?System;
using?System.IO;
using?System.Drawing;
using?System.ComponentModel;
using?System.Windows.Forms;
using?System.IO.Ports;
using?System.Threading;
using?System.Runtime.InteropServices;???
using?System.Collections;
interface?ComPort{
void?Open();
void?Close();
void?SetPortName(string?name);
string?GetPortName();
void?SetBaudRate(int?rate);
int?GetBaudRate();
string?ReadLine();
void?SetLocalTime();
int?ReadByte();
}
public?struct?SystemTime{
public?short?wYear;
public?short?wMonth;
public?short?wDayOfWeek;
public?short?wDay;
public?short?wHour;
public?short?wMinute;
public?short?wSecond;
public?short?wMilliseconds;
}
??public???class???CommPort:ComPort??
??{???
??private???string??portName;?????
??private???int??? baudRate;???
??private???byte??? Parity;???//???0-4=nooddevenmarkspace?????
??private???byte??? StopBits;???//???012???=???1???1.5???2?????
??private???int??? hComm???=???-1;???
??private???bool??? opened???=???false;???
??private???const???uint???GENERIC_READ???=???0x80000000;???
??private???const???uint???GENERIC_WRITE???=???0x40000000;???
??private???const???int???OPEN_EXISTING???=???3;???????????
??private???const???int???INVALID_HANDLE_VALUE???=???-1;???
??
??public?CommPort(){
??portName???=?portName==null?“COM!“:portName;???
??baudRate?=?baudRate==0?4800:baudRate;???
??Parity=???0;???
??StopBits???=1;???
// ??ReadTimeout???=5000;???
??}
??public?bool?Opened{
?? get{
?? return?opened;
?? }
?? set{
?? opened?=?value;
?? }
??}
??public?string?PortName{
?? set{
?? portName?=?value;
?? }
?? get{
?? return?portName;
?? }
??}
??public?void?SetPortName(string?name){
?? portName?=?name;
??}
??public?string?GetPortName(){
?? return?portName;
}
??public?int?BaudRate{
?? set{
?? baudRate?=?value;
?? }
?? get{
?? return?baudRate;
?? }
??}
??public?void?SetBaudRate(int?rate){
?? baudRate?=?rate;
??}
??public?int?GetBaudRate(){
?? return?baudRate;
??}
????????????????????????
//讀寫串口的超時有兩種:間隔超時和總超時。間隔超時是指在接收時兩個字符之間的最大時延。
//總超時是指讀寫操作總共花費的最大時間。寫操作只支持總超時,而讀操作兩種超時均支持。
//用COMMTIMEOUTS結構可以規定讀寫操作的超時。成員都以毫秒為單位.總超時的計算公式是:
//總超時=時間系數×要求讀/寫的字符數+時間常量?
//例如,要讀入10個字符,那么讀操作的總超時的計算公式為:
//讀總超時=ReadTotalTimeoutMultiplier×10+ReadTotalTimeoutConstant?
//可以看出:間隔超時和總超時的設置是不相關的,這可以方便通信程序靈活地設置各種超時。?
//如果所有寫超時參數均為0,那么就不使用寫超時。如果ReadIntervalTimeout為0,
//?那么就不使用讀間隔超時。如果ReadTotalTimeoutMultiplier?和?ReadTotalTimeoutConstant?都為0,
//?則不使用讀總超時。如果讀間隔超時被設置成MAXDWORD并且讀時間系數和讀時間常量都為0,
//?那么在讀一次輸入緩沖區的內容后讀操作就立即返回,而不管是否讀入了要求的字符。
//?在用重疊方式讀寫串口時,雖然ReadFile和WriteFile在完成操作以前就可能返回,
//?但超時仍然是起作用的。在這種情況下,超時規定的是操作的完成時間,
//而不是ReadFile和WriteFile的返回時間.?
??private???struct???COMMTIMEOUTS?????
??{???????
??public???uint??ReadIntervalTimeout;??//讀間隔超時
??public???int???ReadTotalTimeoutMultiplier;?////讀時間系數
??public???int???ReadTotalTime
- 上一篇:C#用戶權限 不同的用戶登錄進來有不同的權限!
- 下一篇:C# .net 單點登錄
評論
共有 條評論