用C#编写程序查找两个与设备(单片机USB转串口)连接的可用串口并正确设置好两个串口

用C#编写程序查找两个与设备(单片机USB转串口)连接的可用串口并正确设置好两个串口,第1张

1、没有明白你的真实意图?

2、电脑的串口既然已经收到了单片机的数据,说明串口端口已经打开,物理端口也分配了;

你想怎么更改电脑串口到单片机的连接状态。

3、若上位机接收到的是0x01,则让serialPort1的Portname设置为单片机1所连对应的串口名

称“com..",若为0x02,则让serialPort2的Portname设置为单片机2所连对应的串口名称。

你这个没有看明白,你到底要改变什么

[2]UDP Server程序

1、编写UDP Server程序的步骤

(1)使用socket()来建立一个UDP socket,第二个参数为SOCK_DGRAM。

(2)初始化sockaddr_in结构的变量,并赋值。sockaddr_in结构定义:

struct sockaddr_in {

uint8_t sin_len

sa_family_t sin_family

in_port_t sin_port

struct in_addr sin_addr

char sin_zero[8]

}

这里使用“08”作为服务程序的端口,使用“INADDR_ANY”作为绑定的IP地址即任何主机上的地址。

(3)使用bind()把上面的socket和定义的IP地址和端口绑定。这里检查bind()是否执行成功,如果有错误就退出。这样可以防止服务程序重复运行的问题。

(4)进入无限循环程序,使用recvfrom()进入等待状态,直到接收到客户程序发送的数据,就处理收到的数据,并向客户程序发送反馈。这里是直接把收到的数据发回给客户程序。

2、udpserv.c程序内容:

#include

#include

#include

#include

#include

#include

#define MAXLINE 80

#define SERV_PORT 8888

void do_echo(int sockfd, struct sockaddr *pcliaddr, socklen_t clilen)

{

int n

socklen_t len

char mesg[MAXLINE]

for(;;)

{

len = clilen

/* waiting for receive data */

n = recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len);

/* sent data back to client */

sendto(sockfd, mesg, n, 0, pcliaddr, len);

}

}

int main(void)

{

int sockfd

struct sockaddr_in servaddr, cliaddr

sockfd = socket(AF_INET, SOCK_DGRAM, 0); /* create a socket */

/* init servaddr */

bzero(&servaddr, sizeof(servaddr));

servaddr.sin_family = AF_INET

servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

servaddr.sin_port = htons(SERV_PORT);

/* bind address and port to socket */

if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)

{

perror("bind error");

exit(1);

}

do_echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8065383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存