查看: 48|回复: 1

CAN-采集培训-CAN基本培训

[复制链接]

39

主题

2

回帖

147

积分

管理员

积分
147
发表于 2026-7-13 08:29:39 | 显示全部楼层 |阅读模式
1)通信协议类型使用 Can2.0BRead

{"Id":2, "ProtocolType":"Can2.0BRead", "Name":"channel2Can", "ComIp":"", "ComTcpPort":0, "ComRs485Port":"nil", "ComRs485Baud":500000, "ComRs485DataBit":8, "ComRs485Parity":"N", "ComRs485StopBit":1,"ConnectTimeout":1000, "DefPackReadTimeout":1000 }

2
3
4

---
ip -details link show can0
# 1.先关闭can网卡ip link set can0 down
# 2.配置波特率,示例 500k
ip link set can0 type can bitrate 500000
# 可选配置(常用)
# sample‑point:采样点默认0.75;开启自动重启(总线off之后自动恢复)
ip link set can0 type can bitrate 500000 sample‑point 0.75 restart‑ms 100
# CAN‑FD 额外配置(如果使用CAN‑FD)
# ip link set can0 type can bitrate 500000 dbitrate 2000000 sample‑point 0.75
# 3.启用CAN ip link set can0 up
# 查看配置是否生效ip -d link show can0


1

主题

1

回帖

11

积分

新手上路

积分
11
发表于 2 小时前 | 显示全部楼层
function MakeRawCanCmd(ichannid, uid, bvalues, datalen) --设备自带的can
    -- if 1 then print("当前can指令下发无效") return end
    local int8_array = {}
    -- 通过按位运算和掩码获取每个字节的值
    for i = 1, 4 do
        iDo = 4 - i
        local byte_value = bit32.band(bit32.rshift(uid, (iDo) * 8), 0xFF)
        --local byte_value = (uid >> ((i - 1) * 8)) & 0xFF
        table.insert(int8_array, byte_value)
    end

    for i, value in ipairs(bvalues) do
        --print(string.format("Index %d: %d", i, value))
        if i <= datalen then
            table.insert(int8_array, value)
        end
    end

    strcmd = ThefitPublic.int_table_to_hex_string(int8_array)
    --print(strcmd)
    redisMq:rpush(ConstDefine.RdsMq .. 'RawCan_' .. ichannid, strcmd)
end
原生CAN通讯用这个函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
关注公众号
返回顶部