[STAThread]
static void Main() 
{
Application.Run(new Transmits());

}
private short pport(string acc_commport)
{
short commport;
switch(acc_commport)
{
case "Com1":
commport=1;
break;
case "Com2":
commport=2;
break;
default:
commport=1;
break; }
return commport;
} private void incomm()
{
try
{
axMSComm.CommPort=pport(cbb_C.SelectedItem.ToString());
if (axMSComm.PortOpen) axMSComm.PortOpen = false;
axMSComm.Settings=cbb_B.SelectedItem.ToString()+","+
(cbb_P.SelectedItem.ToString()).Substring(0,1)+","+
cbb_D.SelectedItem.ToString()+","+cbb_S.SelectedItem.ToString();
axMSComm.RThreshold = 1; 
axMSComm.DTREnable = true;
axMSComm.Handshaking = MSCommLib.HandshakeConstants.comNone;
axMSComm.InputMode = MSCommLib.InputModeConstants.comInputModeText;
axMSComm.InputLen = 0;
axMSComm.NullDiscard = false; 
axMSComm.OnComm += new System.EventHandler(this.axMSComm_OnComm);
try
{
axMSComm.PortOpen = true;
open=true;
}
catch
{
MessageBox.Show("串口被占用或者不存在");
open=false;
}
}
catch
{
MessageBox.Show ("出错");
}
} private void axMSComm_OnComm(object sender, System.EventArgs e)
{
if(!stop)
{
Thread T_data=new Thread(new ThreadStart(ProcessCom)); //感觉这块出错了,不知道如何改,
T_data.IsBackground=true;
T_data.Start();
}
}
private void ProcessCom()
{
if (axMSComm.InBufferCount > 0) ProcessComData((string) axMSComm.Input);
}
private void ProcessComData(string input)
{
// Send incoming data to a Rich Text Box
richtext.AppendText (input);
}
private void ProcessOutData(string output)
{ axMSComm.Output=output;
} private void cmd_open_Click(object sender, System.EventArgs e)
{
Open();
} private void Open()
{
incomm();
if(open==true)
{

cmd_close.Enabled =true;
}
else return;
} private void Transmits_Load(object sender, System.EventArgs e)
{
 cbb_Initialization();
//Open();

} private void cmb_close_Click(object sender, System.EventArgs e)
{
axMSComm.PortOpen=false;
cmd_open.Enabled =true;

   this.Enabled =false; }
private void cbb_Initialization()
{
cbb_B.SelectedIndex =0;
cbb_C.SelectedIndex =0;
cbb_D.SelectedIndex =0;
cbb_P.SelectedIndex =0;
cbb_S.SelectedIndex =0;
}
}
}
我去出来的数据是:
#0001     2006-02-07            10:49:46 WBC  -   0 Cells/uL NIT  -              URO      Normal     PRO  -   0      g/L pH       5.5       *BLD  2+  80Cells/uL SG      >1.030      BIL  -   0   umol/L Vc   -   0   mmol/L KET  -   0   mmol/L GLU  -   0   mmol/L                                        #0003     2006-02-07            10:50:34 WBC  -   0 Cells/uL NIT  -              URO      Normal     PRO  -   0      g/L pH       5.5       *BLD  +-  10Cells/uL SG      >1.030      BIL  -   0   umol/L Vc   -   0   mmol/L KET  -   0   mmol/L GLU  -   0   mmol/L                                        #0003     2006-02-07            10:52:36 WBC  -   0 Cells/uL NIT  -              URO      Normal     PRO  -   0      g/L pH       5.5       *BLD  +-  10Cells/uL SG      >1.030      BIL  -   0   umol/L Vc   -   0   mmol/L KET  -   0   mmol/L GLU  -   0   mmol/L                                        
应该是:

#0050     2005-11-14
            10:56:57
 WBC  -   0 Cells/uL
 NIT  -             
 URO      Normal    
 PRO  -   0      g/L
 pH       6.0       
 BLD  -   0 Cells/uL
 SG       1.025     
 BIL  -   0   umol/L
*Vc   1+  1.4 mmol/L
 KET  -   0   mmol/L
 GLU  -   0   mmol/L
                    
                    

#0050     2005-11-14
            10:56:57
 WBC  -   0 Cells/uL
 NIT  -             
 URO      Normal    
 PRO  -   0      g/L
 pH       6.0       
 BLD  -   0 Cells/uL
 SG       1.025     
 BIL  -   0   umol/L
*Vc   1+  1.4 mmol/L
 KET  -   0   mmol/L
 GLU  -   0   mmol/L
                    
                    

就是多了换行和回车

解决方案 »

  1.   

    不知道是不是串口设置的问题。
    不过可以把输出作一下处理(把两个连续换行替换成一个换行)就解决了。private void ProcessCom()
    {
    if (axMSComm.InBufferCount > 0) ProcessComData((string) axMSComm.Input);
    }
    这里可以跟进去看看
      

  2.   

    axMSComm.InputMode = MSCommLib.InputModeConstants.comInputModeText;改成binary
      

  3.   

    回复人: raulredondo() ( ) 信誉:100  2006-02-08 20:31:00  得分: 0  
     
     
       axMSComm.InputMode = MSCommLib.InputModeConstants.comInputModeText;改成binary
      
     
    -----------------------------------------------------------------------------
    我刚接触.NET不懂如何改为binary
    是这样吗axMSComm.InputMode = binary?
    在问一下出这样的问题是不是跟线程有关系?
    Thread T_data=new Thread(new ThreadStart(ProcessCom)); //感觉这块出错了,不知道如何改,
    T_data.IsBackground=true;
    T_data.Start();
    是不是应该再写一个线程,用于接收数据?
      

  4.   

    个人感觉跟这句有关。
    (string) axMSComm.Input你的input是什么类型的数据,真的可以直接强制转换成string吗?建议跟踪一下,看看input有多长。到底是些什么内容。
      

  5.   

    可以,请问大家axMSComm.InputMode = MSCommLib.InputModeConstants.comInputModeText;
    中的MSCommLib.InputModeConstants在哪能找到相应的资料?
      

  6.   

    你是在c#下用mscom控件吗?,代码没注释看的有点费力啊,我最近也在搞串口,可以交流一下,qq:5742573