C#周立功CANET-200T(新)
来源:互联网 发布:js 获取div的name 编辑:程序博客网 时间:2024/06/09 20:26
之前写过一个关于CANET的文章,现在有所改进
CANET-200T有两个CAN的端口,用程序分别给这两个口发送和接受数据;启动这两个端口,要把两个端口当作两个设备来启动。
#启动CANET-200T的第一个端口
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Configuration;
namespace BroadcastCtrl
{
public class CANstart
{
[DllImport("ControlCAN")]
private static extern Int32 VCI_OpenDevice(Int32 DevType, Int32 DevIndex, Int32 Reserved);
[DllImport("ControlCAN")]
private static extern Int32 VCI_StartCAN(Int32 DevType, Int32 DevIndex, Int32 CANIndex);
[DllImport("ControlCAN")]
private static extern Int32 VCI_SetReference(Int32 DevType, Int32 DevIndex, Int32 CANIndex, Int32 RefType, [MarshalAs(UnmanagedType.LPStr)]string pData);//[MarshalAs(UnmanagedType.LPStr)]string IntPtr
[DllImport("ControlCAN")]
private static extern Int32 VCI_SetReference(Int32 DevType, Int32 DevIndex, Int32 CANIndex, Int32 RefType, out Int32 pData);
[DllImport("ControlCAN")]
private static extern Int32 VCI_Receive(Int32 DevType, Int32 DevIndex, Int32 CANIndex, ref VCI_CAN_OBJ pReceive, Int32 Len, int WaitTime);
public RestartCAN rc;
public int isRes = 0;
public CANstart()
{
int i = VCI_OpenDevice(17, 0, 0);//第二个参数为设备索引号 第一个设备设置为0
if (i == 1)
{
string CANip = ConfigurationManager.AppSettings["canip"].ToString();
Int32 ll = 4001;//第一个端口号
i = VCI_SetReference(17, 0, 0, 0, CANip);
i = VCI_SetReference(17, 0, 0, 1, out ll);
i = VCI_StartCAN(17, 0, 0);
if (i == 1)//开启
{
//MessageBox.Show("start ok");
}
else
{
//MessageBox.Show("start error");
isRes = 1;
rc = new RestartCAN();
}
}
else
{
//MessageBox.Show("ERROR");
}
}
}
}
#启动第二个端口
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Configuration;
namespace BroadcastCtrl
{
public class CANstart2
{
[DllImport("ControlCAN")]
private static extern Int32 VCI_OpenDevice(Int32 DevType, Int32 DevIndex, Int32 Reserved);
[DllImport("ControlCAN")]
private static extern Int32 VCI_StartCAN(Int32 DevType, Int32 DevIndex, Int32 CANIndex);
[DllImport("ControlCAN")]
private static extern Int32 VCI_SetReference(Int32 DevType, Int32 DevIndex, Int32 CANIndex, Int32 RefType, [MarshalAs(UnmanagedType.LPStr)]string pData);//[MarshalAs(UnmanagedType.LPStr)]string IntPtr
[DllImport("ControlCAN")]
private static extern Int32 VCI_SetReference(Int32 DevType, Int32 DevIndex, Int32 CANIndex, Int32 RefType, out Int32 pData);
[DllImport("ControlCAN")]
private static extern Int32 VCI_Receive(Int32 DevType, Int32 DevIndex, Int32 CANIndex, ref VCI_CAN_OBJ pReceive, Int32 Len, int WaitTime);
public RestartCAN2 rc2;
public int isRes = 0;
public CANstart2()
{
int i = VCI_OpenDevice(17, 1, 0);;//第二个参数为设备索引号 第二个设备设置为1
if (i == 1)
{
string CANip = ConfigurationManager.AppSettings["canip_2"].ToString();
Int32 ll = 4002;//第二个端口号
i = VCI_SetReference(17, 1, 0, 0, CANip);
i = VCI_SetReference(17, 1, 0, 1, out ll);
i = VCI_StartCAN(17, 1, 0);
if (i == 1)//开启
{
//MessageBox.Show("start ok");
}
else
{
//MessageBox.Show("start error");
isRes = 1;
rc2 = new RestartCAN2();
}
}
else
{
//MessageBox.Show("ERROR");
}
}
}
}
#上述可以将CANET-200T的俩个端口都打开
接受和发送数据就和之前写的一样。用设备索引号来区分是哪个端口。
- C#周立功CANET-200T(新)
- C#周立功CANET
- 周立功CAN盒驱动C#调用方式
- 周立功 CAN PCI接口卡C#语言示例
- 周立功2010校园招聘(武汉)
- 周立功笔试
- 周立功-采访笔录
- 单片机工具书-周立功
- 嵌入式-周立功
- 周立功键盘
- 我的25年嵌入式生涯(作者:周立功)
- 我的25年嵌入式生涯(周立功)
- 周立功 我的25年嵌入式生涯(转)
- 给应届生的一些建议(转周立功老师)
- 周立功历年笔试题(软件类)
- 周立功写给学单片机的年轻人(转)
- 近期笔试心得(软件工程师,周立功2011校园招聘)
- 周立功送给大学生的话(看看吧大家)
- 用Flex Builder在一个Flex项目中编译多个Application(.mxml)
- 拉姆达表达式(Lambda Expressions)
- 手机信息文件
- linux下程式对比工具meld的安装
- Extjs的类图
- C#周立功CANET-200T(新)
- Java在线备份和还原MySQL数据库。
- AV音视频播放同步问题
- oracle创建用户
- java异常处理
- m2eclipse使用手册遗补之常用仓库地址
- CTE递归的一个应用
- Linux日知录(常用问题笔记)
- 第十一章 进程和信号(三)