志在指尖
用双手敲打未来

c# winform(winform上位机开发实例)

c#winform

usingSystem;
usingSystem.Xml;
usingSystem.Data.OleDb;
usingSystem.Data;
namespaceACS
{
///<summary>
///對數據庫進行更新
///</summary>
///AIDU數據庫連接
///Retrieval返回查詢Dataset
///Translation與數據庫進行交易[Access=true][fail=false]
///
publicclassAIDU
{
#region連接失敗返回失敗消息–[LinkOkreturnnull][LinkfailreturnErrorMessage]
publicstringErrorMsg()
{
returnsErrorMsg;
}
#endregion
#region設置公共連接對像字串–[sAcsCon]
publicstringsAcsConString()
{
stringsConString=”Provider=Microsoft.Jet.OLEDB.4.0;DataSource=”+@”KSZH.mdb”;
//stringsConString=”Provider=OraOLEDB.Oracle.1;Password=mes_ks1;PersistSecurityInfo=True;UserID=mes_ks1;DataSource=linux;ExtendedProperties=”;
returnsConString;
}
publicstringsAcsCon
{
get{returnsAcsConString();}
}
#endregion
#region設置公共連接對像–[Link_cn]
publicOleDbConnectionLink_cn
{
get{returnAcs_cn();}
}
publicOleDbConnectionAcs_cn()
{
OleDbConnectioncn=newOleDbConnection(sAcsCon);
if(cn.State==ConnectionState.Closed)
{
cn.Open();
}
returncn;
}
#endregion
//連接失敗後的返回消息
privatestringsErrorMsg=””;
//連接標志變量[bFlag=trueConnectionDatabaseSuccess]
//[bFlag=falseConnectionDatabaseunSuccess]
privateboolbFlag=false;
#region數據庫連接–[LINK-TEST]c# winform
publicboolAIDU_Link()
{
OleDbConnectionTestCn=newOleDbConnection(sAcsCon);
//測試數據庫連接
try
{
if(TestCn.State!=ConnectionState.Open)
{
TestCn.Open();
bFlag=true;
}
}
catch(Exceptione)
{
sErrorMsg=e.Message;
}
finally
{
if(TestCn.State==ConnectionState.Open)
{
TestCn.Close();
}
}
returnbFlag;
}
#endregion
#region資料查詢–[SELECT]
publicDataSetSelect(stringsCmdString)
{
//建立CONNECTION對像
OleDbConnectioncn1=newOleDbConnection(sAcsCon);
//建立DATASET對像,做資料返回值
DataSetoDs=newDataSet();
try
{//建立Adapter對像
OleDbDataAdaptermyAdapter=newOleDbDataAdapter(sCmdString,cn1);
myAdapter.Fill(oDs);
}
catch
{
cn1.Close();
}
returnoDs;
}
#endregion
#region數據資料更新–[Update]
//執行–[UPDATE][INSERT][DELETE]
//[ThecommandExecutesccessreturn1]
//[ThecommandExecuteunSuccessreturn-1]
publicintUpdateCmd(stringCommandString)
{
intnResult=-1;
//進行一個本地交易
//OleDbTransactionmyTran=Link_cn.BeginTransaction(IsolationLevel.ReadCommitted);
//myTran.Begin();
//oledbcommand命令執行交易
OleDbCommandmyCmd=newOleDbCommand(CommandString,Link_cn);
//和數據庫進這行數據交易
try
{
//提交數據
myCmd.ExecuteNonQuery();
//myTran.Commit();
nResult=1;
}
catch(OleDbExceptionoe)
{
//出錯數據回滾原來的狀態,保持數據庫一致性
//myTran.Rollback();
nResult=-1;
throwoe;
}
finally
{
//執行交易後關閉聯接
Link_cn.Close();
}
returnnResult;
}
#endregion
}
#region處理字符,以符合SQL語句用–[classsTringAdd]
publicclasssTringAdd
{
publicsTringAdd(){}
publicstringSQLQ(stringsText)
{
sText=”‘”+sText+”‘”;
returnsText;
}
publicstringSQLQ(intn)
{
returnn.ToString();
}
publicstringSQLQ(doublen)
{
returnn.ToString();
}
publicstringSQLQC(stringsText)
{
sText=”‘”+sText+”‘,”;
returnsText;
}
publicstringSQLQC(intnText)
{
stringsText=nText.ToString()+”,”;
returnsText;
}
publicstringSQLQC(doublenText)
{
stringsText=nText.ToString()+”,”;
returnsText;
}
}
#endregion
}

winform上位机开发实例

串口通信实现:
串口扫描:通过C#提供的计时器类进行定时-2s扫描串口,将可用串口实时显示到当前comboBox控件。
#region串口扫描显示可用串口通过TimerScan的Enabed属性进行启动OR停止
System.Windows.Forms.TimerTimerScan=newSystem.Windows.Forms.Timer();
privatevoidTimerScanInit()
{
TimerScan.Interval=2000;
TimerScan.Tick+=newEventHandler(TimerScan_Tick);
TimerScan.Enabled=true;
}
privatevoidTimerScan_Tick(objectsender,EventArgse)
{
comboBox1.Items.Clear();//先清理
string[]ports=SerialPort.GetPortNames();
comboBox1.Items.AddRange(ports);
if(ports.Length>0)
{
comboBox1.SelectedItem=ports[0];
}
}
#endregion
打开串口与接收函数:
#region打开串口
privatestaticSerialPortsPort=newSerialPort();//实例化串口类
publicstaticvoidPort_OpenOrClose()c# winform1
{
try
{
if(!sPort.IsOpen)
{
sPort.PortName=PortName;
sPort.BaudRate=BaudRate;
sPort.DataBits=8;
sPort.StopBits=StopBits.One;
sPort.Parity=Parity.None;
sPort.Handshake=Handshake.None;
sPort.DataReceived+=Port_DataReceived;
sPort.Open();
}
else
{
sPort.Close();
}
}
catch(Exceptione)
{
Console.WriteLine(ex.Message);
}
}
#endregion
#region串口接收、发送函数
privatestaticvoidPort_DataReceived(objectsender,SerialDataReceivedEventArgse)
{
byte[]_revData=newbyte[1024];
int_len=sPort.BytesToRead;
sPort.Read(_revData,0,_revData.Length);
//处理代码、干活可以利用多线程、队列进行处理大量数据
//委托刷新主界面图像
this.Invoke(newAction(()=>
{
}));
}
publicstaticvoidPort_Send(byte[]_sendData)
{
sPort.Write(_sendData,0,_sendData.Length);
}

未经允许不得转载:IT技术网站 » c# winform(winform上位机开发实例)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载