for (int i = 0; i < strInput.Length; i++) {
string str = "0000" + ((int)strInput[i]).ToString("X");
txt += str.Substring(str.Length - 4);
}第一句变量txt应该是strInput吧
string str = "0000" + ((int)strInput[i]).ToString("X");
txt += str.Substring(str.Length - 4);
}第一句变量txt应该是strInput吧
解决方案 »
- c#datetime比较
- WPF 发生了XamlPauseException
- 请教下关于WEBSERVICE调用方式的问题。
- StatusStrip控件里怎么 移除 掉ToolStripStatusLabel?
- 跪求。。
- 求救有关C# 里面的Office项目如何调用宏
- C#winform 程序,求高手帮我挑错!为什么我的int a=da.Update(ds, "login");中a的值不变(为默认值0)
- 100 分 求 简易数据库源码例子
- 如何用FindControl取出DataGrid的HeaderTemplate中的控件
- 求Visual Studio主界面各参数的意义
- 有点难!我单位购买了一个系统,里面有这么一个功能?将文件传到数据库中.
- C#有哪些比较好的书籍?
以下是我用VB描述的请用C#写一下,
'三个控件
'1.MSCCom 串口通讯控件
'2.cmdCnn 连接按钮控件
'3.Lbl(2) label控件用于显示连接状态。'以下是一个连接按钮事件源码..
Private Sub cmdCnn_Click()
On Error GoTo err
Dim strTemp As String '定义字符串变量
Dim Buffer '定义变体变量,在返回的信息中找"OK"
'如果端口没打开,就打开!
If MSCCom.PortOpen = False Then
MSCCom.PortOpen = True
End If MSCCom.InBufferCount = 0
'发送字符串 "AT" + 回车键
strTemp = "AT" + vbCr
'发送..
MSCCom.Output = strTemp
Dim T As Single '定义一个单精度变量
Dim L As Integer '定义一个整型变量 T = Timer 'Timer 是VB中的一个函数 它体现了现在的秒数它一直在走
'循环
Do
Lbl(2).Caption = "COM1 已打开," & Chr(13) & "正在连接手机 ..."
Buffer = Buffer + MSCCom.Input
L = InStr(1, Buffer, "OK" & vbCrLf) '在返回的信息中打 "OK" 字符串
Loop Until L <> 0 Or Timer - T > 2 '直到 L不等于0也就是找到OK了,或者是(Timer - T > 2)大于两秒中就退出循环
If L = 0 Then '2钟后没找到OK
Lbl(2).Caption = "设备没有连线接好," & Chr(13) & "请检查与设备有关线路。"
Else
'找到了。
Lbl(2).Caption = "COM1 已打开," & Chr(13) & " 手机连接正常."
End If
Exit Sub
err:
MsgBox "Error ! " & err.Description, vbCritical, "Error !!"
Exit Sub
End Sub
T = Timer 'Timer 是VB中的一个函数 它体现了现在的秒数它一直在走
'循环
Do
Lbl(2).Caption = "COM1 已打开," & Chr(13) & "正在连接手机 ..."
Buffer = Buffer + MSCCom.Input
L = InStr(1, Buffer, "OK" & vbCrLf) '在返回的信息中打 "OK" 字符串
Loop Until L <> 0 Or Timer - T > 2 '直到 L不等于0也就是找到OK了,或者是(Timer - T > 2)大于两秒中就退出循环
int L;
string Buffer = null;
do {
Lbl[2].Caption = "COM1 已打开," + (char)13 + "正在连接手机 ...";
Buffer += MSCCom.Input;
L = CultureInfo.CurrentCulture.CompareInfo.IndexOf(Buffer, "OK\r\n", 1, CompareOptions.IgnoreCase);
} while(L != 0 || Environment.TickCount - T > 2);
祝圣诞快乐,身体健康!
D:\CS\SendC#\SMS\Form1.cs(314): 找不到类型或命名空间名称“CompareOptions”(是否缺少 using 指令或程序集引用?)
D:\CS\SendC#\SMS\Form1.cs(314): 找不到类型或命名空间名称“CultureInfo”(是否缺少 using 指令或程序集引用?)CompareOptions
CultureInfo
是不是没有定义,还是没有引用类?请公主明示。
using System.Threading;
我引用了它们就行了,还在测试中..
CultureInfo都需要在页面中进行定义,你试着用鼠标右键,转到定义看一下是否存在,如没有,就该找xixigongzhu(夕夕公主) 了,不过代码是她给你的,估计也就是她的问题了。
if you want a newline, is better use Environment.NewLine
可能你还没明白我的意思:以下代码要求在buffer变量中,循环中找“OK”字符串,
只到找到就退出循环。或超过2秒也跳出,不然会当机的。
Do
Lbl(2).Caption = "COM1 已打开," & Chr(13) & "正在连接手机 ..."
Buffer = Buffer + MSCCom.Input
L = InStr(1, Buffer, "OK" & vbCrLf) '在返回的信息中找 "OK" 字符串
Loop Until L <> 0 Or Timer - T > 2 '直到L不等于0也就是找到OK字符串了,或者是超过2秒的话自动退出循环,免当机了。以下是C# 一下按钮事件!code,帮忙看看。
private void btnCnn_Click(object sender, System.EventArgs e)
{
try
{
if (MSCom.PortOpen){
MessageBox.Show("端口已打开!");}
else
{
MSCom.PortOpen =true;
btnCnn.Enabled =false;
// label1.ForeColor=;
label1.Text="COM1已打开!";
}
MSCom.InBufferCount = 0;
MSCom.Output = "AT" +(char)13; int T = Environment.TickCount;
int L;
string Buffer = null;
do
{
label1.Text = "COM1 已打开," + (char)13 + "正在连接手机 ...";
Buffer += MSCom.Input;
L = CultureInfo.CurrentCulture.CompareInfo.IndexOf(Buffer, "OK\r\n", 1, CompareOptions.IgnoreCase);
int textBox4=Environment.TickCount;
} while(L != 0 || Environment.TickCount - T > 2000);
}
catch(System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
DoEvents()
怎么用?
Console.WriteLine(Environment.TickCount+"************"+T);
根据你的指点,我输出了一下值:发现:
while(L != 0 || Environment.TickCount - T > 2);这句是并列式,我要的是或者关系,请写一下。
这样就行了,
当 L=0退出,Environment.TickCount - T 小于等于5000时也退出。
谢谢了。公主。
while(L == -1 && Environment.TickCount - T <= 2000);
我在写一个用手机发短信程式。VB已写出来了,所以想用C#写一下。
C#的思想,与VB差异很大呀。
还有点问题,发送“AT”命令后不能返回字符串。正在试,谢谢你了,唉真不知该叫你什么好呢。我的QQ9066818。