C#上位机编写时遇到下位机数据传输问题。

图片说明
然后C#提示是这里有问题:
if (Convert.ToUInt16(serialPort1.ReadLine()) != 1820)
原程序为:
private void button1_Click(object sender, EventArgs e)
{
try
{
if (isopen == false)
{
serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
serialPort1.Write("s");
if (Convert.ToUInt16(serialPort1.ReadLine()) != 1820)
{
MessageBox.Show("没找到设备");
return;
}
button1.Text = "停止采集";
单片机下位机调试过已经是可以检测的了,就是上位机的问题,调试了之后问题是:WindowsApplication1.Form1.button1_Click(object sender = {未知}, System.EventArgs e = {未知}) C#这个object sender收不到东西,代码到底哪部分有问题啊??

3个回答

serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
调试下这里
comboBox2.Text是不是合法的整数,有没有空格、空白

qq_41946147
qq_41946147 这句话应该没问题,应该是if (Convert.ToUInt16(serialPort1.ReadLine()) != 1820) 这句,麻烦问一下您这个判断!=1820有什么意义吗?
5 个月之前 回复

if (Convert.ToUInt16(serialPort1.ReadLine()) != 1820) 这个判断有问题,目测是serialPort1.ReadLine()输入的内容不是(0 到 9),有空格和其他字符串
第二种原因是输入超出UInt16了大小,也会报错,,,,(MaxValue = 65535; MinValue = 0;)

csdn086
csdn086 就是在出错的地方前面加一句var temp=serialPort1.ReadLine();,然后调试看看temp是什么值
5 个月之前 回复
qq_41946147
qq_41946147 回复csdn086: 这个用变量接收是什么意思?这句要怎么改?
5 个月之前 回复
qq_41946147
qq_41946147 回复csdn086: 嗯,先感谢帮助。
5 个月之前 回复
csdn086
csdn086 C的话我不懂,就不知道了 ,哈哈
5 个月之前 回复
csdn086
csdn086 C#那边的话,出问题的那句可以改成Convert.ToUInt64(serialPort1.ReadLine()) , 如果还有问题的话,就在出错的代码前面,用变量接收serialPort1.ReadLine()
5 个月之前 回复
qq_41946147
qq_41946147 我回去试了下,应该是下位机有问题,下位机发送的数一直是 00 00 00 00 00 00.......不知道是什么原因。
5 个月之前 回复
qq_41946147
qq_41946147 那要怎么改?输入不是从其他的字符改成uint输入吗?
5 个月之前 回复

请问你的编写上位机是与WIFI模块进行TCP协议通信吗呢。是的话能看看嘛。qq1497632755. 邮箱1497632755@qq.com,谢谢了(^~^)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!