示例#1
0
static BOOL SaveCanSetup(HWND hdlg, struct TMhsCanCfg* cfg)
{
    short unBTRVal;
    UBTR0 sBtr0Reg;
    UBTR1 sBtr1Reg;
    UINT    unNbt0          = 0;
    FLOAT   fNbt            = 0;
    UINT    unBrp0          = 0;
    UINT    unNbt1          = 0;
    UINT    unBrp1          = 0;
    FLOAT   fBrp            = 0;
    WORD    unProductNbtNBrp= 0;
    DOUBLE  dBaudRate       = 0;
    DOUBLE  dblClock        = 16;

    GetDlgItemTextCpy(cfg->CanSnrStr, hdlg, IDC_SNR_EDIT, MHS_STR_SIZE);

    if ( g_bBTRRadioBtnChecked )
    {
        cfg->CanBtrValue = GetDlgItemHex(hdlg, IDC_BTR_EDIT);
        unBTRVal = cfg->CanBtrValue;
        sBtr1Reg.ucBTR1 = (0x00FF & unBTRVal);
        sBtr0Reg.ucBTR0 = (unBTRVal >> 8);

        // Get the baudrate for BTR0 and BTR1 values.
        dBaudRate = dCalculateBaudRateFromBTRs(sBtr0Reg.ucBTR0 ,sBtr1Reg.ucBTR1);

        // Calculate the NBT and BRP product. and NBT value using BTR0 value
        unProductNbtNBrp    = (UINT)((dblClock/(dBaudRate/1000))/2.0*
                                     (defFACT_FREQUENCY / defFACT_BAUD_RATE));

        unBrp0              = (sBtr0Reg.sBTR0Bit.ucBRPbit+1);
        unNbt0              = unProductNbtNBrp/unBrp0;
        fNbt                = (FLOAT)unProductNbtNBrp/unBrp0;

        unNbt1              = (sBtr1Reg.sBTR1Bit.ucTSEG1bit+1)+
                              (sBtr1Reg.sBTR1Bit.ucTSEG2bit+1)+1;
        unBrp1              = unProductNbtNBrp/unNbt1;
        fBrp                = (FLOAT)unProductNbtNBrp/unNbt1;

        //Check if the BTR0 and BTR1 value entered is valid. if Not valid
        // Restore the previos value else calculate the new list.
        if( unNbt0>defMAX_NBT || unNbt0<defMIN_NBT || fNbt != unNbt0  ||
                unBrp1>defMAX_BRP || unBrp1<defMIN_BRP || unBrp1 != fBrp  ||
                unNbt1>defMAX_NBT || unNbt1<defMIN_NBT )
        {
            MessageBox(hdlg, "Invalid BTRs Configuration!", "Warning", MB_OK|MB_ICONSTOP);
            return FALSE;
        }

    }
    else
    {
示例#2
0
static void SaveCanSetup(HWND hdlg, struct TMhsCanCfg *cfg)
{
GetDlgItemTextCpy(cfg->CanSnrStr, hdlg, IDC_SNR_EDIT, MHS_STR_SIZE);
cfg->CanBtrValue = GetDlgItemHex(hdlg, IDC_BTR_EDIT);
cfg->CanSpeed = GetComboBox(hdlg, IDC_CAN_SPEED);
}