Esempio n. 1
0
int CDeviceCAN::OpenCAN()
{	
	int stat;

	canInitializeLibrary();
	canhandle = canOpenChannel(0, canOPEN_EXCLUSIVE);
	if (canhandle < 0) {
		AfxMessageBox("打开端口错误");	
		return STATUS_ERR;
	}
	Baudrates PCANBaudrate;
	if(m_canBaudrate == 500)
	{
		PCANBaudrate = BAUD_500K;
	}
	else
	{
		PCANBaudrate = BAUD_250K;
	}
	stat = canSetBusParams(canhandle, PCANBaudrate, 0, 0, 1, 1, 0);

	if (stat < 0) 
	{
		AfxMessageBox("设置参数错误");	
			return STATUS_ERR;
	}
		stat = canBusOn(canhandle);
	if (stat < 0) {
		AfxMessageBox("挂入总线错误");
			return STATUS_ERR;
	}
	return STATUS_OK;

}
Esempio n. 2
0
//
//called when the OnBus button is pressed
//
void CCanTestMFCDlg::OnOnBus()
{
    int		stat;
    int		handle;
    char	tmpStr[200];

    //init canlib
    canInitializeLibrary();

    //open channel 0
    handle = canOpenChannel(0, canOPEN_EXCLUSIVE);
    if (handle < 0) {
        sprintf(tmpStr, "ERROR: canOpenChannel() handle returned: %d", handle);
        AfxMessageBox(tmpStr);
    }

    //set up the bus
    stat = canSetBusParams(handle, canBITRATE_125K, 0, 0, 0, 0, 0);
    if (stat < 0) {
        AfxMessageBox("ERROR: canSetBusParams().");
    }

    //go on bus
    stat = canBusOn(handle);
    if (stat < 0) {
        AfxMessageBox("ERROR: canBusOn().");
    }

    //set notification
    stat = canSetNotify(handle, this->GetSafeHwnd() , canNOTIFY_RX | canNOTIFY_ERROR | canNOTIFY_STATUS | canEVENT_TX | canNOTIFY_ENVVAR);

    //save the can channel handle in the global variable m_handle
    m_handle = handle;
}
Esempio n. 3
0
/**
 * @brief MainWindow::MainWindow
 * @param parent
 */
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connected = false;
    canHandle = -1;
    busOn = false;

    uitimer.setInterval(100);
    uitimer.start();

    connect(&uitimer, SIGNAL(timeout()), this, SLOT(uiUpdate()));

    connect(ui->lineEdit_CanByte0, SIGNAL(textChanged(QString)), this, SLOT(on_bytes_changed()));
    connect(ui->lineEdit_CanByte1, SIGNAL(textChanged(QString)), this, SLOT(on_bytes_changed()));
    connect(ui->lineEdit_CanByte2, SIGNAL(textChanged(QString)), this, SLOT(on_bytes_changed()));
    connect(ui->lineEdit_CanByte3, SIGNAL(textChanged(QString)), this, SLOT(on_bytes_changed()));
    connect(ui->lineEdit_CanByte4, SIGNAL(textChanged(QString)), this, SLOT(on_bytes_changed()));
    connect(ui->lineEdit_CanByte5, SIGNAL(textChanged(QString)), this, SLOT(on_bytes_changed()));
    connect(ui->lineEdit_CanByte6, SIGNAL(textChanged(QString)), this, SLOT(on_bytes_changed()));
    connect(ui->lineEdit_CanByte7, SIGNAL(textChanged(QString)), this, SLOT(on_bytes_changed()));

    canInitializeLibrary();
    on_pushButtonRefresh_clicked();

    ui->progressBarBusLoad->setMinimum(0);
    ui->progressBarBusLoad->setMaximum(10000);
    ui->comboBoxBaud->setCurrentIndex(2);
}
Esempio n. 4
0
static bool dbg_kavaser_can_init(uint32 ch)
{
	CanHandle handle;

	canInitializeLibrary();

	handle = canOpenChannel(dbg_kvaser.channel, canOPEN_EXCLUSIVE);
	if (handle < 0) {
		printf("dbg_kavaser_can_init:canOpenChannel err=%d\n", handle);
		return FALSE;
	}
	printf("dbg_kavaser_can_init:canOpenChannel OK:handle=%d\n", handle);

	dbg_kvaser.handle = handle;
	dbg_kvaser.status = canSetBusParams(handle, dbg_kvaser.baud, 0, 0, 0, 0, 0);
	if (dbg_kvaser.status != canOK) {
		printf("dbg_kavaser_can_init:canSetBusParams err=%d\n", dbg_kvaser.status);
		return FALSE;
	}
	printf("dbg_kavaser_can_init:canSetBusParams OK:baud=%d\n", dbg_kvaser.baud);
	dbg_kvaser.status = canBusOn(handle);
	if (dbg_kvaser.status != canOK) {
		printf("dbg_kavaser_can_init:canBusOn err=%d\n", dbg_kvaser.status);
		return FALSE;
	}
	printf("dbg_kavaser_can_init:canBusOn OK\n");

	return TRUE;
}
Esempio n. 5
0
int main(void)
{
	canInitializeLibrary();
	can_init();
	i15765_init();

	UIN15765_DEBUG_TRACE("%s OK!\n\r",  __FUNCTION__ );
	return 0;
}
Esempio n. 6
0
void MainWindow::on_actionInstall_Drivers_triggered()
{
    QMessageBox::StandardButton reply;
    reply = QMessageBox::question(this, "Install", "Install kvaser drivers?",
                                  QMessageBox::Yes|QMessageBox::No);
    if (reply == QMessageBox::Yes) {
        // install drivers
        system("kvaser_drivers_setup.exe");
        canInitializeLibrary();
        on_pushButtonRefresh_clicked();
    }else{
        qDebug() << "Yes was *not* clicked";
    }

}
Esempio n. 7
0
int InitCtrlWithFlags(int ctrl, int bitrate, int flags)
{
  int stat;
  int hnd;

  canInitializeLibrary();

  hnd = canOpenChannel(ctrl, flags);
  if (hnd < 0) Check("canOpenChannel", hnd);

  if (bitrate < 0) {
    stat = canSetBusParams(hnd, bitrate, 0, 0, 0, 0, 0);
    Check("canSetBusParams", stat);
  } else if (bitrate == 5000) {
    // Special case for 5k
    stat = canSetBusParams(hnd, 5000, 16, 8, 1, 1, 0);
    Check("canSetBusParams", stat);
  } else if (bitrate == 10000) {
    // Special case for 10k
    stat = canSetBusParams(hnd, 10000, 12, 7, 1, 1, 0);
    Check("canSetBusParams", stat);
  } else if (bitrate == 20000) {
    // Special case for 20k
    stat = canSetBusParamsC200(hnd, 0x58, 0x67);
    Check("canSetBusParamsC200", stat);
  } else if (bitrate == 40000) {
    // Special case for 40k
    stat = canSetBusParamsC200(hnd, 0x58, 0x14);
    Check("canSetBusParamsC200", stat);
  } else {
    Error("Bad bitrate sent to canInitCtrlWithFlags: %u",bitrate);
  }

  stat = canBusOn(hnd);
  Check("canBusOn", stat);

  stat = canSetBusOutputControl(hnd, canDRIVER_NORMAL);
  Check("canSetBusOutputControl", stat);

  return hnd;
}
Esempio n. 8
0
int main(int argc, char **argv)
{
  int i, h;
  int stat;
  unsigned char buf[8];

  if (argc != 2) {
    printf("Usage: read_customer_data channel\n");
    exit(1);
  }
  
  canInitializeLibrary();
  h = canOpenChannel(atoi(argv[1]), 0);
  if (h < 0) {
    printf("Cannot open channel %s, error code %d\n", argv[1], h);
    exit(1);
  }

  stat = kvReadDeviceCustomerData(h,
                                  100 /*userNumber*/,
                                  0, /* reserved, MBZ */
                                  buf, sizeof(buf));

  if (stat != canOK) {
    printf("kvReadDeviceCustomerData returned error code %d\n", stat);
    exit(1);
  }

  printf("User data: ");
  for (i=0; i<(signed)sizeof(buf); i++) {
    printf("%02x ", buf[i]);
  }
  printf("\n");
  
  canClose(h);
  return 0;
}
Esempio n. 9
0
void main(int argc, char* argv[])
{
    canStatus stat;
    int i, chanCount;

    printf("Starting...\n");

    canInitializeLibrary();

    stat = canGetNumberOfChannels(&chanCount);
    Check("canGetNumberOfChannels", stat);
    if (chanCount<0 || chanCount > 1000) {
        printf("ChannelCount = %d but I don't believe it.\n", chanCount);
        exit(1);
    } else {
        printf("%d channels.\n", chanCount);
    }

    for (i=0; i<chanCount; i++) {
        DWORD tmp;
        DWORD quad[2];
        char name[64];
        unsigned long ean[2];

        printf("== Channel %d ===============================\n", i);

        stat = canGetChannelData(i, canCHANNELDATA_CHANNEL_CAP, &tmp, sizeof(tmp));
        Check("canGetChannelData", stat);
        printf("Channel Capabilities =  0x%08lx ", tmp);
        if (tmp & canCHANNEL_CAP_EXTENDED_CAN) printf("Ext ");
        if (tmp & canCHANNEL_CAP_BUS_STATISTICS) printf("Stat ");
        if (tmp & canCHANNEL_CAP_ERROR_COUNTERS) printf("ErrCnt ");
        if (tmp & canCHANNEL_CAP_CAN_DIAGNOSTICS) printf("Diag ");
        if (tmp & canCHANNEL_CAP_GENERATE_ERROR) printf("ErrGen ");
        if (tmp & canCHANNEL_CAP_GENERATE_OVERLOAD) printf("OvlGen ");
        if (tmp & canCHANNEL_CAP_TXREQUEST) printf("TxRq ");
        if (tmp & canCHANNEL_CAP_TXACKNOWLEDGE) printf("TxAck ");
        if (tmp & canCHANNEL_CAP_VIRTUAL) printf("Virt ");
        if (tmp & canCHANNEL_CAP_SIMULATED) printf("Simulated ");
        if (tmp & canCHANNEL_CAP_REMOTE) printf("Remote ");

        printf("\n");

        stat = canGetChannelData(i, canCHANNELDATA_TRANS_CAP, &tmp, sizeof(tmp));
        Check("canGetChannelData", stat);
        printf("DRVcan Capabilities =   0x%08lx ", tmp);
        if (tmp & canDRIVER_CAP_HIGHSPEED) printf("HiSpd ");
        printf("\n");

        stat = canGetChannelData(i, canCHANNELDATA_CHANNEL_FLAGS, &tmp, sizeof(tmp));
        Check("canGetChannelData", stat);
        printf("Channel Flags =         0x%08lx\n", tmp);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_TYPE, &tmp, sizeof(tmp));
        Check("canGetChannelData", stat);
        printf("Board type =            0x%08lx", tmp);
        switch (tmp) {
        case canHWTYPE_NONE:
            printf(" (Unknown)\n");
            break;
        case canHWTYPE_VIRTUAL:
            printf(" (Virtual)\n");
            break;
        case canHWTYPE_LAPCAN:
            printf(" (LAPcan family)\n");
            break;
        case canHWTYPE_PCCAN:
            printf(" (PCcan Family)\n");
            break;
        case canHWTYPE_PCICAN:
            printf(" (PCIcan Family)\n");
            break;
        case canHWTYPE_USBCAN:
            printf(" (USBcan Family)\n");
            break;
        case canHWTYPE_PCICAN_II:
            printf(" (PCIcan II Family)\n");
            break;
        case canHWTYPE_USBCAN_II:
            printf(" (USBcan II Family (including Kvaser Memorator))\n");
            break;
        case canHWTYPE_LEAF:
            printf(" (Kvaser Leaf Family)\n");
            break;
        case canHWTYPE_PC104_PLUS:
            printf(" (PC104+ Family)\n");
            break;
        case canHWTYPE_PCICANX_II:
            printf(" (PCIcanx II Family)\n");
            break;
        case canHWTYPE_MEMORATOR_PRO:
        case canHWTYPE_UVP:
            printf(" (Kvaser Memorator Professional Family)\n");
            break;
        case canHWTYPE_USBCAN_PRO:
            printf(" (Kvaser USBcan Professional Family)\n");
            break;
        case canHWTYPE_IRIS:
            printf(" (Kvaser BlackBird)\n");
            break;
        case canHWTYPE_EAGLE:
            printf(" (Kvaser Eagle)\n");
            break;
        case canHWTYPE_MINIPCIE:
            printf(" (Kvaser Mini PCI Express)\n");
            break;
        case canHWTYPE_USBCAN_LIGHT:
            printf(" (Kvaser USBcan Light)\n");
            break;
        default:
            printf(" (Unsupported)\n");
            break;
        }

        stat = canGetChannelData(i, canCHANNELDATA_CARD_NUMBER, &tmp, sizeof(tmp));
        Check("canCHANNELDATA_CARD_NUMBER", stat);
        printf("Board Number =          0x%08lx\n", tmp);

        stat = canGetChannelData(i, canCHANNELDATA_CHAN_NO_ON_CARD, &tmp, sizeof(tmp));
        Check("canCHANNELDATA_CHAN_NO_ON_CARD", stat);
        printf("Channel no on board =   0x%08lx\n", tmp);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_SERIAL_NO, quad, sizeof(quad));
        Check("canCHANNELDATA_CARD_SERIAL_NO", stat);
        printf("Board S/N =             0x%08lx 0x%08lx\n", quad[0], quad[1]);

        stat = canGetChannelData(i, canCHANNELDATA_TRANS_SERIAL_NO, quad, sizeof(quad));
        Check("canCHANNELDATA_TRANS_SERIAL_NO", stat);
        printf("DRVcan S/N =            0x%08lx 0x%08lx\n", quad[0], quad[1]);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_FIRMWARE_REV, quad, sizeof(quad));
        Check("canCHANNELDATA_CARD_FIRMWARE_REV", stat);
        printf("Board F/W version =     0x%08lx 0x%08lx\n", quad[0], quad[1]);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_HARDWARE_REV, quad, sizeof(quad));
        Check("canCHANNELDATA_CARD_HARDWARE_REV", stat);
        printf("Board H/W version =     0x%08lx 0x%08lx\n", quad[0], quad[1]);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_UPC_NO, ean, sizeof(ean));
        Check("canCHANNELDATA_CARD_UPC_NO", stat);
        printf("Board UPC/EAN =         0x%08x 0x%08x\n", ean[1], ean[0]);

        stat = canGetChannelData(i, canCHANNELDATA_TRANS_UPC_NO, ean, sizeof(ean));
        Check("canCHANNELDATA_TRANS_UPC_NO", stat);
        printf("DRVcan UPC/EAN =        0x%08x 0x%08x\n", ean[1], ean[0]);

        stat = canGetChannelData(i, canCHANNELDATA_CHANNEL_NAME, name, sizeof(name));
        Check("canCHANNELDATA_CHANNEL_NAME", stat);
        printf("Channel name =          '%s'\n", name);

        stat = canGetChannelData(i, canCHANNELDATA_REMOTE_OPERATIONAL_MODE, &tmp, sizeof(tmp));
        if (stat != canERR_NOT_IMPLEMENTED) {
            Check("canCHANNELDATA_REMOTE_OPERATIONAL_MODE", stat);
            printf("Operational mode =      %d (%s)\n", tmp, CANCHANNEL_OPMODE_TEXT[tmp]);

            stat = canGetChannelData(i, canCHANNELDATA_REMOTE_PROFILE_NAME, name, sizeof(name));
            Check("canCHANNELDATA_REMOTE_PROFILE_NAME", stat);
            printf("Profile name =          '%s'\n", name);

            stat = canGetChannelData(i, canCHANNELDATA_REMOTE_HOST_NAME, name, sizeof(name));
            Check("canCHANNELDATA_REMOTE_HOST_NAME", stat);
            printf("Remote host name =      '%s'\n", name);

            stat = canGetChannelData(i, canCHANNELDATA_REMOTE_MAC, name, sizeof(name));
            Check("canCHANNELDATA_REMOTE_MAC", stat);
            printf("MAC =                   '%s'\n", name);
        } else {
            printf("Device is not capable of acting in remote operational mode\n");
        }
        printf("\n");

    }
}
Esempio n. 10
0
int main(int argc, char *argv[])
{
  canStatus stat;
  canHandle hnd;
  int channelRx;
  int channelTx;

  if (argc != 3) {
    printUsageAndExit(argv[0]);
  }

  {
    char *endPtr = NULL;
    errno = 0;
    channelRx = strtol(argv[1], &endPtr, 10);
    if ( (errno != 0) || ((channelRx == 0) && (endPtr == argv[1])) ) {
      printUsageAndExit(argv[0]);
    }
    channelTx = strtol(argv[2], &endPtr, 10);
    if ( (errno != 0) || ((channelTx == 0) && (endPtr == argv[2])) ) {
      printUsageAndExit(argv[0]);
    }
  }

  canInitializeLibrary();

  hnd  = canOpenChannel(channelRx, canOPEN_REQUIRE_EXTENDED);
  if (hnd < 0) {
    printf("canOpenChannel %d", channelRx);
    check("", hnd);
    return -1;
  }

  stat = canBusOff(hnd);
  check("canBusOff", stat);
  if (stat != canOK) {
    goto ErrorExit;
  }
  stat = canSetNotify(hnd, callback, canNOTIFY_ERROR | canNOTIFY_STATUS, NULL);
  check("canSetNotify", stat);
  if (stat != canOK) {
    goto ErrorExit;
  }
  stat = canSetBusParams(hnd, bitrate, 0, 0, 0, 0, 0);
  check("canSetBusParams", stat);
  if (stat != canOK) {
    goto ErrorExit;
  }
  stat = canBusOn(hnd);
  check("canBusOn", stat);
  if (stat != canOK) {
    goto ErrorExit;
  }

  incBusLoad(channelTx, canOPEN_REQUIRE_EXTENDED, 0);
  testBusLoad(hnd);
  incBusLoad(channelTx, canOPEN_REQUIRE_EXTENDED, 100);
  testBusLoad(hnd);
  testBusLoad(hnd);
  incBusLoad(channelTx, canOPEN_REQUIRE_EXTENDED, 300);
  testBusLoad(hnd);
  testBusLoad(hnd);

ErrorExit:

  stat = canBusOff(hnd);
  check("canBusOff", stat);
  stat = canClose(hnd);
  check("canClose", stat);
  stat = canUnloadLibrary();
  check("canUnloadLibrary", stat);

  return 0;
}
Esempio n. 11
0
void initCAN() { canInitializeLibrary(); }