迪文科技论坛

 找回密码
 立即注册
搜索
查看: 271|回复: 10

【提问】如何用串口2和串口4通信

[复制链接]

20

主题

35

回帖

337

积分

中级会员

Rank: 3Rank: 3

积分
337
发表于 2024-11-7 15:59:51 | 显示全部楼层 |阅读模式
屏:DMG48270C043-04WTC
我想通过这两个串口中的任意一个实现对外部数据接受和传送。

我也参考了 C_8283协议(新全功能、全串口)1.8,但他那串口传输的测试没看明白,有人能讲解下吗?
回复

使用道具 举报

0

主题

117

回帖

1551

积分

金牌会员

Rank: 6Rank: 6

积分
1551
发表于 2024-11-7 17:37:06 | 显示全部楼层
发送函数有注释;接收函数就是把数据放到一个数据队列里面,处理完后就丢掉,DWIN8283协议格式是5A A5 长度 82/83 地址 数据,解析就是一步步判断这个字节是否正确,正确才执行下一步,不对就丢掉,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

20

主题

35

回帖

337

积分

中级会员

Rank: 3Rank: 3

积分
337
 楼主| 发表于 2024-11-8 08:51:51 | 显示全部楼层
紫狐 发表于 2024-11-7 17:37
发送函数有注释;接收函数就是把数据放到一个数据队列里面,处理完后就丢掉,DWIN8283协议格式是5A A5 长度 ...

能写个用串口2发送数据到0x3000的示例参考下吗?
回复

使用道具 举报

1

主题

19

回帖

358

积分

中级会员

Rank: 3Rank: 3

积分
358
发表于 2024-11-8 09:12:51 | 显示全部楼层
直接用send_str函数就行
回复

使用道具 举报

0

主题

117

回帖

1551

积分

金牌会员

Rank: 6Rank: 6

积分
1551
发表于 2024-11-8 10:26:42 | 显示全部楼层
1732200390 发表于 2024-11-8 08:51
能写个用串口2发送数据到0x3000的示例参考下吗?

u8 senddata[20]={1,2,3,4,5,6,7,8,9};
uart_send_str(2,senddata,9);就通过串口2发送了1 2 3 4 5 6 7 8 9出去
回复

使用道具 举报

20

主题

35

回帖

337

积分

中级会员

Rank: 3Rank: 3

积分
337
 楼主| 发表于 2024-11-14 09:02:55 | 显示全部楼层
紫狐 发表于 2024-11-8 10:26
u8 senddata[20]={1,2,3,4,5,6,7,8,9};
uart_send_str(2,senddata,9);就通过串口2发送了1 2 3 4 5 6 7 8  ...

我的地址咋去接收啊
回复

使用道具 举报

0

主题

117

回帖

1551

积分

金牌会员

Rank: 6Rank: 6

积分
1551
发表于 2024-11-14 09:43:02 | 显示全部楼层
1732200390 发表于 2024-11-14 09:02
我的地址咋去接收啊

如果就用DWIN协议就在这个地方判断地址是0x3000,就可以执行你的程序了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

20

主题

35

回帖

337

积分

中级会员

Rank: 3Rank: 3

积分
337
 楼主| 发表于 2024-11-14 15:01:14 | 显示全部楼层
紫狐 发表于 2024-11-14 09:43
如果就用DWIN协议就在这个地方判断地址是0x3000,就可以执行你的程序了

为什么我调用这函数这几个地址显示的是01,蜂鸣器还会响
u8 senddata[20] = {16,5,4,1,2};
void send_data_to_addresses()
{
    u8 arr[20];  

    // 目标地址数组
    u16 addresses[] = {0x7100,0x7200,0x7300,0x7400,0x7500};
        u16 i =0;
        u16 j =0;
       
    for (i = 0; i < sizeof(addresses) / sizeof(addresses[0]); i++)
    {
        // 构造arr数组
        arr[0] = DTHD1;
        arr[1] = DTHD2;
        arr[2] = 10;  
        arr[3] = 0x82;
        arr[4] = (u8)(addresses >> 8);
        arr[5] = (u8)(addresses);
        for (j = 0; j < 5; j++)
        {
            arr[6 + j] = senddata[j];
        }
        // 调用deal_82_cmd函数进行数据传输
        deal_82_cmd(2, arr);
    }
}
回复

使用道具 举报

0

主题

117

回帖

1551

积分

金牌会员

Rank: 6Rank: 6

积分
1551
发表于 2024-11-15 08:35:16 | 显示全部楼层
1732200390 发表于 2024-11-14 15:01
为什么我调用这函数这几个地址显示的是01,蜂鸣器还会响
u8 senddata[20] = {16,5,4,1,2};
void send_dat ...

c51写地址直接用write_dgus函数就行了,不需要再弄这么麻烦,write-dgus,read-dgus系列函数就是读写dgus地址的
回复

使用道具 举报

0

主题

661

回帖

7599

积分

论坛元老

Rank: 8Rank: 8

积分
7599
发表于 2024-11-15 08:35:17 | 显示全部楼层
1732200390 发表于 2024-11-14 15:01
为什么我调用这函数这几个地址显示的是01,蜂鸣器还会响
u8 senddata[20] = {16,5,4,1,2};
void send_dat ...

完整的工程能不能发出来看看?
沧海横流,方显英雄本色。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-12-5 02:47 , Processed in 0.087102 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表