如何用c实现Modbus RTU主从通讯

新人一个,看了很久的Modbus协议,都完全不知道如何下手写Modbus RTU的代码,
我想模仿Modbus RTU通讯,自己编写主站和从站,用软件实现,有没有大神指点一下迷津,例如怎么发送数据,是用socket还是用什么?跪求大神指点!!

2个回答

一般是通过串口来实现,当然如果你想也可以通过 Socket 来验证。
主/从都没有的情况下,先按最简单的让主/从连接并完成数据传输。然后再按协议,进行控制过程的实现。

Switr
Switr 回复91program: Thanks,懂了。
4 年多之前 回复
91program
91program 回复Switr: 无论是串口,还是TCP,它只是一个数据传输的通道。只要你的数据是按 RTU 协议的,应该就算是。当然,如果 RTU 对传输介质有要求则你必须按要求来做。
4 年多之前 回复
Switr
Switr 用socket那还算RTU方式传输吗,貌似是Tcp方式了,我想知道Modbus RTU是怎么进行传输,是用什么函数方法?
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MODBUS RTU Extend和MODBUS RTU有什么区别

在串口连接设备时,何时选择MODBUS RTU Extend这样的通讯类型,合适选择MODBUS RTU

求delphi7编写ModBus RTU通讯实例,最好有详细注释 在线等????????

求delphi7编写ModBus RTU通讯实例,最好有详细注释 在线等????????

Modbus RTU协议TCP通信代码

空调远程控制系统 使用的是modbus4j,不成功,初次使用modbus设备 协议解析 一、读取设备状态 发送: 设备地址 功能号 起始寄存器 寄存器字节个数 CRC校验 1字节 01H 0x00 0x00 0x00 0x01 MSB LSB 返回: 设备地址 功能号 起始寄存器 数据字节个数 设备状态 CRC校验 1字节 01H 0x00 0x00 0x00 0x01 9字节 MSB LSB 测试指令: 发送:01 01 00 00 00 09 MSB LSB 返回:01 01 00 00 00 09 11 00 02 1A 02 01 00 00 01 MSB LSB 其中:11-温度17度;00-保留;02 1A 02空调状态为制冷26度(详见空调码表);01 00-输入1闭合,输入2断开;00 01-输出1断开,输出2闭合 ``` /** * 批量写数据到保持寄存器 * * @param master * 主站 * @param slaveId * 从站地址 * @param start * 起始地址的偏移量 * @param values * 待写数据 */ public static void writeRegistersTest(ModbusMaster master, int slaveId, int start, short[] values) { try { WriteRegistersRequest request = new WriteRegistersRequest(slaveId, start, values); WriteRegistersResponse response = (WriteRegistersResponse) master .send(request); if (response.isException()) System.out.println("Exception response: message=" + response.getExceptionMessage()); else System.out.println("Success"); } catch (ModbusTransportException e) { e.printStackTrace(); } } ``` ``` public static void main(String[] args) throws Exception { String ip = "10.1.8.222"; int port = 100; ModbusFactory modbusFactory = new ModbusFactory(); // 设备ModbusTCP的Ip与端口,如果不设定端口则默认为502 IpParameters params = new IpParameters(); params.setHost(ip); if (502 != port) { params.setPort(port); }// 设置端口,默认502 ModbusMaster tcpMaster = null; tcpMaster = modbusFactory.createTcpMaster(params, true); try { tcpMaster.init(); writeRegistersTest(tcpMaster, 1, 0, new short[] { 0x01, 0x00, 0x00, 0x00, 0x09 }); } finally { tcpMaster.destroy(); } } ``` 我QQ:782007828,望高人指点,不胜感激

用VC编写的ModBus RTU通讯的程序,请大神帮忙注释一下每句代码的意思。灰常感谢

(一)、通讯口设置 DCB dcb; hCom=CreateFile("COM1",//com1口      GENERIC_READ|GENERIC_WRITE,//允许读和写      0,//独占方式(同一时刻只能被一个用户打开,其它用户只能等待此用户放弃后,才能打开使用它。)      NULL,      OPEN_EXISTING,//打开而不是创建      0,//同步方式      NULL); if(hCom==INVALID_HANDLE_VALUE)//无效的返回值 {   MessageBox("createfile error,error"); } BOOL error=SetupComm(hCom,1024,1024);//输入缓冲区和输出缓冲区的大小都是1024 if(!error)   MessageBox("setupcomm error"); error=GetCommState(hCom,&dcb);//读取串口设置 if(!error)   MessageBox("getcommstate,error"); dcb.BaudRate=2400;//波特为率2400 dcb.ByteSize=8;//每个字节有8位 dcb.Parity=EVENPARITY;//NOPARITY;//偶校验或者无校验 dcb.StopBits=ONESTOPBIT;//一个停止位 error=SetCommState(hCom,&dcb);//函数设置com口的设置控制块 (二)、CRC校验码计算 UINT crc//不带符号整形 void calccrc(BYTE crcbuf) { BYTE i; crc=crc ^ crcbuf; for(i=0;i<8;i++) { BYTE TT; TT=crc&1; crc=crc>>1; crc=crc&0x7fff; if (TT==1) crc=crc^0xa001; crc=crc&0xffff; } } (三)、数据发送 zxaddr=11;//读取地址为11的巡检表数据 zxnum=10;//读取十个通道的数据 writebuf2[0]=zxaddr; writebuf2[1]=3; writebuf2[2]=0; writebuf2[3]=0; writebuf2[4]=0; writebuf2[5]=zxnum; crc=0xffff; calccrc(writebuf2[0]); calccrc(writebuf2[1]); calccrc(writebuf2[2]); calccrc(writebuf2[3]); calccrc(writebuf2[4]); calccrc(writebuf2[5]); writebuf2[6]=crc & 0xff; writebuf2[7]=crc/0x100; WriteFile(hCom,writebuf2,8,&comnum,NULL);

跪求用C语言编写Modbus协议

跪求用C语言编写Modbus协议源码 谢谢!! 有大佬有利用c语言实现Modbus协议传输的源码吗?跪求!

modbus RTU主站的相关问题

新人一个刚刚接触modbus,想问一下写一个modbus RTU/以太网 的主站程序 是让我写一个类似modbuspoll工具么?我有点不太明白。求普及,以及modbus如何在PC机上模拟通讯。。。

MOdbus 的 RTU连接报错

我在开发Modbus的RTU连接时遇到在测试类里面走main方法没有任何问题,在我处理业务时候调取就报错![图片说明](https://img-ask.csdn.net/upload/201908/12/1565582300_435079.png) 一下是我的代码 ``` package com.crrcdt.zn.common.utils.Modbus; import com.serotonin.modbus4j.BatchRead; import com.serotonin.modbus4j.BatchResults; import com.serotonin.modbus4j.ModbusFactory; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.code.DataType; import com.serotonin.modbus4j.exception.ErrorResponseException; import com.serotonin.modbus4j.exception.ModbusInitException; import com.serotonin.modbus4j.exception.ModbusTransportException; import com.serotonin.modbus4j.locator.BaseLocator; import com.serotonin.modbus4j.msg.WriteCoilRequest; import com.serotonin.modbus4j.msg.WriteCoilResponse; import java.util.ArrayList; import java.util.Date; public class Modbus4jUtils { /** * 工厂。 */ static ModbusFactory modbusFactory; static { if (modbusFactory == null) { modbusFactory = new ModbusFactory(); } } /** * 获取master * * @return * @throws ModbusInitException */ public static ModbusMaster getMaster() throws ModbusInitException { // IpParameters params = new IpParameters(); // params.setHost(host); // params.setPort(port); // // modbusFactory.createRtuMaster(wapper); //RTU 协议 // modbusFactory.createUdpMaster(params);//UDP 协议 // modbusFactory.createAsciiMaster(wrapper);//ASCII 协议 // ModbusMaster master = modbusFactory.createTcpMaster(params, false);// TCP 协议 ModbusMaster master1 = modbusFactory.createRtuMaster(new SerialPortWrapperImpl()); master1.init(); return master1; } /** * 读取[01 Coil Status 0x]类型 开关数据 * * @param slaveId slaveId * @param offset 位置 * @return 读取值 * @throws ModbusTransportException 异常 * @throws ErrorResponseException 异常 * @throws ModbusInitException 异常 */ public static Boolean readCoilStatus(ModbusMaster master, int slaveId, int offset) throws ModbusTransportException, ErrorResponseException, ModbusInitException { // 01 Coil Status BaseLocator<Boolean> loc = BaseLocator.coilStatus(slaveId, offset); Boolean value = master.getValue(loc); return value; } /** * 读取[02 Input Status 1x]类型 开关数据 * * @param slaveId * @param offset * @return * @throws ModbusTransportException * @throws ErrorResponseException * @throws ModbusInitException */ public static Boolean readInputStatus(ModbusMaster master, int slaveId, int offset) throws ModbusTransportException, ErrorResponseException { // 02 Input Status BaseLocator<Boolean> loc = BaseLocator.inputStatus(slaveId, offset); Boolean value = master.getValue(loc); return value; } /** * 读取[03 Holding Register类型 2x]模拟量数据 * * @param slaveId slave Id * @param offset 位置 * @param dataType 数据类型,来自com.serotonin.modbus4j.code.DataType * @return * @throws ModbusTransportException 异常 * @throws ErrorResponseException 异常 * @throws ModbusInitException 异常 */ public static Number readHoldingRegister(ModbusMaster master, int slaveId, int offset, int dataType) throws ModbusTransportException, ErrorResponseException, ModbusInitException { // 03 Holding Register类型数据读取 BaseLocator<Number> loc = BaseLocator.holdingRegister(slaveId, offset, dataType); Number value = master.getValue(loc); return value; } /** * 读取[04 Input Registers 3x]类型 模拟量数据 * * @param slaveId slaveId * @param offset 位置 * @param dataType 数据类型,来自com.serotonin.modbus4j.code.DataType * @return 返回结果 * @throws ModbusTransportException 异常 * @throws ErrorResponseException 异常 * @throws ModbusInitException 异常 */ public static Number readInputRegisters(ModbusMaster master, int slaveId, int offset, int dataType) throws ModbusTransportException, ErrorResponseException, ModbusInitException { // 04 Input Registers类型数据读取 BaseLocator<Number> loc = BaseLocator.inputRegister(slaveId, offset, dataType); Number value = master.getValue(loc); return value; } /** * 批量读取使用方法 * * @throws ModbusTransportException * @throws ErrorResponseException * @throws ModbusInitException */ public static void batchRead(ModbusMaster master, ArrayList data) throws ModbusTransportException, ErrorResponseException, ModbusInitException { BatchRead<Integer> batch = new BatchRead<Integer>(); batch.addLocator(0, BaseLocator.holdingRegister(1, 1, DataType.FOUR_BYTE_FLOAT)); batch.addLocator(1, BaseLocator.inputStatus(1, 0)); batch.setContiguousRequests(false); BatchResults<Integer> results = master.send(batch); System.out.println(results.getValue(0)); System.out.println(results.getValue(1)); } public static boolean writeCoilTest(ModbusMaster master, int slaveId, int offset, boolean value) { boolean values=false; try { WriteCoilRequest request = new WriteCoilRequest(slaveId, offset, value); WriteCoilResponse response = (WriteCoilResponse) master.send(request); if (response.isException()) System.out.println("Exception response: message=" + response.getExceptionMessage()); else System.out.println("功能码:1,写入"+value+"成功!"); System.out.println(value+"结束"+new Date()); values=true; } catch (ModbusTransportException e) { e.printStackTrace(); } return values; } } ``` 下面是测试类: ``` package com; import com.crrcdt.zn.common.utils.Modbus.Modbus4jUtils; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.exception.ErrorResponseException; import com.serotonin.modbus4j.exception.ModbusInitException; import com.serotonin.modbus4j.exception.ModbusTransportException; public class MudbusTest { // 输入/输出流 // private static InputStream inputStream; // private static OutputStream outputStream; public static void main(String[] args){ //modbus rtu try { ModbusMaster master = Modbus4jUtils.getMaster(); // while (true){ System.out.println(Modbus4jUtils.readCoilStatus(master,1,0)); Modbus4jUtils.writeCoilTest(master,1,0,true); // System.out.println(Modbus4jUtils.readHoldingRegister(master,1,16, DataType.FOUR_BYTE_FLOAT)); // } master.destroy(); } catch (ModbusInitException e) { e.printStackTrace(); } catch (ModbusTransportException e) { e.printStackTrace(); } catch (ErrorResponseException e) { e.printStackTrace(); } } } ``` 下面是我调用 ``` package com.crrcdt.zn.zngjx.modbus; import com.crrcdt.zn.common.utils.Modbus.Modbus4jUtils; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.exception.ErrorResponseException; import com.serotonin.modbus4j.exception.ModbusInitException; import com.serotonin.modbus4j.exception.ModbusTransportException; //import com.crrcdt.zn.common.utils.ModbusRTU; import java.util.ArrayList; import java.util.Date; import java.util.List; public class ModbusRTUController { /** * 写入开门指令 * * @param address * 地址 * @param com * 连接的com口 * @param slaveId * 连接的设备地址 */ public static boolean writeCoil(){ boolean returns=false; //RTU传输方式 try { ModbusMaster master = Modbus4jUtils.getMaster(); // while (true){ System.out.println("开门开始时间"+new Date()); // System.out.println(Modbus4jUtils.readCoilStatus(master,1,0)); returns= Modbus4jUtils.writeCoilTest(master,1,0,true); // System.out.println(Modbus4jUtils.readHoldingRegister(master,1,16, DataType.FOUR_BYTE_FLOAT)); // } master.destroy(); } catch (ModbusInitException e) { e.printStackTrace(); } return returns; } public static boolean writeCoil1(){ boolean returns=false; //RTU传输方式 try { ModbusMaster master = Modbus4jUtils.getMaster(); // while (true){ System.out.println("关门开始时间"+new Date()); // System.out.println(Modbus4jUtils.readCoilStatus(master,1,0)); returns= Modbus4jUtils.writeCoilTest(master,1,0,false); // System.out.println(Modbus4jUtils.readHoldingRegister(master,1,16, DataType.FOUR_BYTE_FLOAT)); // } master.destroy(); } catch (ModbusInitException e) { e.printStackTrace(); } return returns; } /** * 读入开门指令 * * @param address * 地址 * @param com * 连接的com口 */ public static boolean readCoil(){ boolean returns=false; //RTU传输方式 try { ModbusMaster master = Modbus4jUtils.getMaster(); // while (true){ System.out.println("读取开始时间"+new Date()); returns=Modbus4jUtils.readCoilStatus(master,1,0); // returns= Modbus4jUtils.writeCoilTest(master,1,0,true); // System.out.println(Modbus4jUtils.readHoldingRegister(master,1,16, DataType.FOUR_BYTE_FLOAT)); // } master.destroy(); } catch (ModbusInitException e) { e.printStackTrace(); } catch (ModbusTransportException e) { e.printStackTrace(); } catch (ErrorResponseException e) { e.printStackTrace(); } return returns; } /** * 读多个开门指令 * * @param address * 地址 * @param com * 连接的com口 * @param len * 读取长度 */ // public boolean[] readCoillist(int address, String com,int len,int slaveId){ // boolean[] returns=new boolean[len]; // //RTU传输方式 // ModbusMaster master =ModbusRTU.getRtuMaster(com); // try { // //初始化 // //设置超时时间 // master.setTimeout(50); // //设置重连次数 // master.setRetries(1); // try { // master.init(); // } catch (ModbusInitException e) { // e.printStackTrace(); // } // //设置从站ID //// int slaveId = 1; // //开关量读单个数据 // returns=ModbusRTU.readCoilTest(master, slaveId, address, len); // } // finally { // master.destroy(); // } // return returns; // } /** * 读取保持寄存器数据 * * @param address * 地址 * @param com * 连接的com口 */ // public static int readHoldingRegisters(int address, String com, int slaveId){ // int i; // //RTU传输方式 // ModbusMaster master =ModbusRTU.getRtuMaster(com); // try { // //初始化 // //设置超时时间 // master.setTimeout(50); // //设置重连次数 // master.setRetries(100); // try { // master.init(); // } catch (ModbusInitException e) { // e.printStackTrace(); // } // //设置从站ID //// int slaveId = 1; // //开关量读单个数据 // short[] returns=ModbusRTU.readHoldingRegistersTest(master, slaveId, address, 1); // i=returns[0]; // } // finally { // master.destroy(); // } // return i; // } /** * 读取保持寄存器数据 * @param address * 地址 * @param com * @param slaveId */ // public List<Integer> readHoldingRegisterslist(int address, String com, List<Integer> slaveId){ // List<Integer>returns=new ArrayList<>(); // //RTU传输方式 // ModbusMaster master =ModbusRTU.getRtuMaster(com); // try { // //初始化 // //设置超时时间 // master.setTimeout(50); // //设置重连次数 // master.setRetries(100); // try { // master.init(); // } catch (ModbusInitException e) { // e.printStackTrace(); // } // //设置从站ID //// int slaveId = 1; // for (int i:slaveId) { // //开关量读单个数据 // short[] returns1 = ModbusRTU.readHoldingRegistersTest(master, i, address, 1); // if (returns1!=null&&returns1.length>0){ // returns.add((int) returns1[0]); // } // // } // // } // finally { // master.destroy(); // } // return returns; // } } ``` 求大神帮忙!!!

如何在一个系统平台上实现多个modbus主从网络

rt,我想在一块板子上通过rtu实现多个modbus主从网络,主要做的是主站,也是一对一的,不过有多个这样的网络,也就是说是主站A发送信息到从站A,主站B发送信息到从站B,A、B之间不会有交流,不知道如何才能实现,而且两个网络能否同时用一个modbus动态库~谢谢。

C#实现Modbus RTU高速读取下位机寄存器数据

如题,已经实现读数,但是速度不是特别快,有没有超快速的读取方法?

用socket 实现Modbus TCP/IP 通讯

如题,C++编程:用socket TCP/IP 更改端口号 为502 可以实现Modbus TCP/IP 通讯吗? 1、我现在服务器端是用socket TCP/IP 创建的,客户端用的是Modsim32的从设备仿真工具。 2、基本配置 物理链路上是通的; 我要实现服务器端到客户端数据的收发,服务器端 的端口号是502; 系统是win7 32 Pro 中文版,编译环境是VC++6.0; 3、测试结果,服务器创建失败; 4、问题,我这样做有问题么

基于c++的modbus开发,有没有大佬可以指点一下迷津

![图片说明](https://img-ask.csdn.net/upload/201806/02/1527925966_683286.png) 这个是一个plc对于modbus开发的说明,但是我看的不是太明白, 相当于Modbus地址类型0、1,支持Modbus功能码1、2、5、15 这个是啥意思

python:modbus-rtu循环读取三项功率仪数据问题

如下所示的程序,读取三项功率仪704地址的数据,循环只能执行一次,然后就报错了,错误信息如图,请问是什么问题啊,怎么解决?万分感谢 ``` import serial import modbus_tk import modbus_tk.defines as cst from modbus_tk import modbus_rtu import time def sleeptime(hour, min, sec): return hour * 3600 + min * 60 + sec second = sleeptime(0, 0, 3) master = modbus_rtu.RtuMaster( serial.Serial('COM8', baudrate=19200, bytesize=8, parity='N', stopbits=1, xonxoff=0) ) master.set_timeout(5.0) master.set_verbose(True) num=1 con=5 while num!=con: data = master.execute(1, cst.READ_HOLDING_REGISTERS, 704, 1) time.sleep(second) num=num+1![图片说明](https://img-ask.csdn.net/upload/201812/06/1544081295_931419.png) ```

C#与PLC通讯,C#做从站中modbus寻址方式

C#与PLC通讯,modbus-RTU,c#做从站,比如我想用PLC读C#中D0的值,怎么在C#中把值赋进D0

西门子1215C通过485模块读取不到Modbus-rtu仪表数据。

A相电流寄存器起始23 24 B相25 26 C相27 28具体编程参数与监控表,线路连接如下。读取保持寄存器从40001开始,40001+23,连续读取6个寄存器。问题,PLC读取不到仪表485线传输出的数据。使用万用表测量485两线间,各线路连接件,存在电压。求大神指点表-1 西门子S7-1215C读取Modbus-rtu三相多功能电能表-2 西门子S7-1215C读取Modbus-rtu三相多功能电能表-3 西门子S7-1215C读取Modbus-rtu三相多功能电能表-4

大虾们,HAL库可以实现modbus通讯吗?

我想用stm32f042f6p6这个芯片做成主机,通过功能码去读取从机的相应地址下的数据,但我怎么弄都实现不了,有大虾弄过吗?麻烦指点一二,当然,最好源代码可以参考,谢谢。

组态王与装置modbusrtu通讯

组态王与装置modbusrtu通讯,如何连续读取装置的多个数据。比如想读取寄存器地址0300-0320的数据

modbus4j 实现slave端

怎么用modbus4j实现计算机做slave端。可不可以 提供一个demo

[求助]关于Modbus通讯,一主多从,通讯卡顿

问题描述:上位机是C#WINFORM通过485串口用modbus协议和PLC、陀螺仪、以及支架传感器通信。 1.当通讯波特率设置到115200时,就通讯错误了,但是和一个设备用115200是没问题的。 2.只和PLC进行通讯,既有读也有写,正常 3.只和陀螺仪通讯【读取】,也正常 4.和PLC以及陀螺仪同时读取就卡顿了,主UI界面显示的读出数据一跳一跳的,像卡了一样,正常应该是连续的变化的,Timer的TICK设置为50ms或200ms甚至1000ms都一样 5.还没有把3个从站设备都加进去通讯 猜想: 1.Modbus实际应用中是不是不支持同时高速读写多个从站设备? 2.终端加匹配电阻是否有用,实际情况是,这几个设备间隔不超2米,但是网上有人说波特率大了也要加电阻。PS:我用的有源485 希望各位不吝赐教! ``` try { //读取平台6个缸的行程反馈数据 if ((argument as ThreadMethodHelper).runningFlag1) { gang_F = master.ReadHoldingRegisters(1, 11, 6);//0-16383 (argument as ThreadMethodHelper).returnValue1 = gang_F; } //读取支架六个传感器的反馈数据 if ((argument as ThreadMethodHelper).runningFlag2) { gang_F = master.ReadHoldingRegisters(1, 0, 6);//0-16383 (argument as ThreadMethodHelper).returnValue2 = gang_F; } //读取陀螺仪数据 if ((argument as ThreadMethodHelper).runningFlag3) { GyroParameters = master.ReadHoldingRegisters(0x50, 0x34, 12); (argument as ThreadMethodHelper).returnValue3 = GyroParameters; } if ((argument as ThreadMethodHelper).QDOutput != null) { master.WriteMultipleRegisters(1, 101, (argument as ThreadMethodHelper).QDOutput); } //Thread.Sleep(50); } catch (Exception ex) { //timer.Enabled = false; MessageBox.Show(ex.Message.ToString() + "\r\n请检查通讯"); Environment.Exit(0); } ```

用java写一个模拟modbus协议从设备的程序该怎么写?

用java写一个模拟modbus协议从设备的程序该怎么开始呢,是使用modbus4j.jar和 seroUtils.jar, RXTXcomm.jar这些包么? 网上有用的资源好像很少,有没有大神接触过类似的?可以提供一下资源么?源代码,示例什么的?还有seroUtils.jar有没有源代码?或者给我一些其他的提示?真的不知如何下手。

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

linux2.6.1内核源码注释

包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。前后历时三年,算是干货。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

零基础学C#编程—C#从小白到大咖

本课程从初学者角度出发,提供了C#从入门到成为程序开发高手所需要掌握的各方面知识和技术。 【课程特点】 1 由浅入深,编排合理; 2 视频讲解,精彩详尽; 3 丰富实例,轻松易学; 4 每章总结配有难点解析文档。 15大章节,228课时,1756分钟与你一同进步!

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

编程实现学生基本信息管理程序

编程实现学生基本信息管理程序。学生基本信息包括:学号、姓名、性别、年龄、班级、学院、专业等。具体实现的管理功能如下: (1) 输入并显示多个学生的基本信息; (2) 可根据需要实现学生信息的添加; (

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

玩转Linux:常用命令实例指南

人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。 本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 --------------------------------------------------------------- 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+700元编程礼包。 &nbsp;

基于STM32的电子时钟设计

时钟功能 还有闹钟功能,温湿度功能,整点报时功能 你值得拥有

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

Git 实用技巧

这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。

计算机组成原理算法实现

计算机组成原理算法实现,能够实现定点小数的机器数表示、定点小数的变形补码加减运算、定点小数的原码一位乘法运算和浮点数的加减运算。

为linux系统设计一个简单的二级文件系统

实验目的: 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 实验要求: 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条)

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

2019全国大学生数学建模竞赛C题原版优秀论文

2019全国大学生数学建模竞赛C题原版优秀论文,PDF原版论文,不是图片合成的,是可编辑的文字版。共三篇。 C044.pdf C137.pdf C308.pdf

土豆SDK(Java版)-非官方

由于土豆SDK一直建设中,最近几天抽空写了一套java的SDK。包含了现有的所有请求协议。本套SDK中仅提供了oAuth的方式(引用oAuth.net的java版示例),并没有在框架中实现,涉及到登录

Android小项目——新闻APP(源码)

Android小项目——新闻APP(源码),一个很简单的可以练手的Android Demo Ps:下载之前可以先看一下这篇文章——https://blog.csdn.net/qq_34149526/a

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

相关热词 c# 解析cad c#数字格式化万 c#int转byte c#格式化日期 c# wpf 表格 c# 实现ad域验证登录 c#心跳包机制 c#使用fmod.dll c#dll vb 调用 c# outlook
立即提问
相关内容推荐