怎么实现用C#编写程序利用电脑COM串口接收传感器信号,再向继电器、电磁阀发送信号?最好再举一个简单的例

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-15
C#接收传感器发来的数据。然后传感器发报警信号,显示在winform窗体上,求报警这一块是怎么实现的!

如果你用的是串口接收传感器数据的话可以给接收数据的事件添加事件处理方法
在事件处理方法中判断数据是否达到临界值,然后视情况报警
具体可参考:

http://tracefact.net/CSharp-Programming/Delegates-and-Events-Advanced.aspx

协议! modbus

c#的例子如下(我朋友调试和下面的电路板通信的,协议是自定义的,你只看过程就行了),下面计算机串口和单片机设备连接还有通用的电路,不过你用什么MCU都不知道真的不好给你例子,只能有局部电路图
private void OpenSmode_Click(object sender, EventArgs e)
{
string S;
S = "";
int Sum = 0;
byte[] RxArray = new byte[25];
byte[] TxArray = new byte[2];
bool Flag = false;
TxArray[0] = 0x53;
for (int i = 0; i < 25; i++)
{
RxArray[i] = 0x00;
}
if (serialPort1.IsOpen)
{
serialPort1.Write(TxArray, 0, 1);
Thread.Sleep(200);
serialPort1.Read(RxArray, 0, 21);
serialPort1.Write(RxArray, 20, 1);
Thread.Sleep(200);
serialPort1.Read(RxArray, 21, 2);
for (int i = 1; i < 23; i++)
{
Sum += RxArray[i];
}
if (Sum == 0)
{
Flag = true;
}
if (Flag == true)
{
S += Convert.ToString(RxArray[0],16);
}
else
{
for (int i = 0; i < 23; i++)
{
S += Convert.ToString(RxArray[i],16) + " ";
}
}
textBox2.Text = S;
if (RxArray[20] == RxArray[21])
{
if (Flag == true)
{
textBox5.Text = " 处于S模式中";
}
else
{
if (RxArray[22] == 0x4F)
{
textBox5.Text = " 成功打开S模式";
}
else
{
textBox5.Text = " 打开S模式失败";
}
}
}
else
{
textBox5.Text = " 打开S模式失败";
}
}
}

大哥,程序要接合电子的话,就不是你说的随便编程的事了,也没有简单的了,再简单也要实现DA,AD转换吧,转换部件呢,CPU组件呢,你就需要一个单片机吧,程序首先要在单片机上开发,再做成串口才开以发送的.然后才能有系统程序跟它配对.这简单吗,不过说来也容易,编个函数就可以了串口就是基础啦.

上位机与执行机构中,缺少中间转换环节比如单片机或PLC之类,或是PCI板卡之类的

C#难道没有Com控件的吗?

  • 怎么用c语言实现2—4+6—8…+98—100?
    答:在C语言中,可以使用循环语句和条件语句来实现对序列2—4+6—8…+98—100的求和。可以通过判断当前项的值和前一项的值符号是否相同来实现正负号的交替。以下是一种可能的实现方式:以上代码中,我们定义了变量 i、sum、sign 和 term,其中 i 表示循环计数器,sum 表示求和的结果,sign 表示正负号,...
  • 用c语言编程如何实现求和的程序代码?
    答:1、首先把头文件,main函数写好#include<stdio.h> main(),如下图所示。2、之后需要定义几个变量,一个存放和,一个从1开始到100,如下图所示。3、之后书写for循环,首先给i赋值为1,其中如果要求200以内和把数字100改为200即可。4、然后写for循环里面的内容,sum=sum+i;把每个i的值加到sum...
  • 怎么用c语言实现x的3次方?
    答:可以使用pow(x,y)函数来实现x的3次方;该函数需要调用math.h头文件 代码举例如下:x=3时 include<stdio.h> include<math.h> int main(){ int x=3,y;y=pow(x,3);printf("%d\n",y);} 运行结果如下图:
  • 如何用c语言编写一个程序,实现按从大到小的顺序排序输出10个数_百度知...
    答:用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:include<stdio.h> int main(){ int i,j,a[10],t;printf("输入数");for (i = 0; i < 10; i++)scanf("%d",&a[i]);for (i = 0; i < 10; i++){ for (j = i + 1; j < 10;j...
  • 用c语言怎么实现 输入一个以回车符结束的字符串(不超过80个字符),统 ...
    答:1 通过gets读入字符串,这个函数是专门读一行的。2 遍历字符串,判断是否为元音,也就是a,e,i,o,u,注意大小写。3 如果是,累加。4 遍历结束后,输出结果。代码如下:int main(){ char s[90]; int i,c=0; gets(s); for(i = 0; s[i]; i ++) { if(s[i]>='...
  • 面试题:C语言用十种方法实现hello world程序,怎么做?
    答:1 最经典的“Hello world!”,直接用 printf 输出 “Hello world!”include <stdio.h> include <iostream> int main(){ printf("Hello world! "); // 教科书的写法 puts("Hello world!"); // 我最喜欢的 puts("Hello" " " "world!"); // 拼接字符串 std::cout << "Hello world!"...
  • c语言的乘方怎么实现?
    答:1、C语言中计算一个数的N次方可以用库函数pow来实现,还可以直接使用2^3就可以算出结果。pow函数原型:double pow(double x,double y)。其中x值是底数,y值是幂。举例:double a=pow(3.14,2)计算3.14的平方。注意:使用pow函数时,需要将头文件#include<math.h>包含进源文件中。2、在C语言...
  • c语言如何实现一个程序循环执行n次
    答:在C语言中,可以使用for循环或while循环来实现一个程序循环执行n次。以下是两种方法的示例:使用for循环:首先定义一个整型变量i,用于计数。然后使用for循环,循环n次。每次循环中,i都会增加1。在循环体中,编写需要重复执行的代码。示例代码如下:使用while循环:首先定义一个整型变量i,用于计数。然后...
  • 怎么用C语言实现一堆数字的下一个数除以上一个数。即第二个除以第一个...
    答:将需要的数据存到一个数组中 然后循环做数组后一个元素除以前一个元素的操作,结果存到另个一个数组中 include "stdio.h"int main(){ double a[4]={1,2,3,4};double result[4]={0};int i;for(i=1;i<4;i++)result[i-1]=a[i]/a[i-1];for(i=0;i<4;i++)printf("%.4lf...
  • 怎样用C语言程序编程实现m和n的最大公约数和最小公倍数,用do-while循环...
    答:从键盘接收两个int型整数m和n,先求出最大公约数,再由"m/最大公约数*n"来求得最小公倍数。代码如下:include "stdio.h"int main(int argc,char *argv[]){int m,n,g;printf("Input m & n(int m,n>0)...\n");if(scanf("%d%d",&m,&n)!=2 || m<1 || n<1){//输入两...