110,538
社区成员
发帖
与我相关
我的任务
分享
struct CTollRate
{
DWORD BaseWeightTollRate; //spare1
DOUBLE FavRate1; //spare7
DOUBLE FavRate2; //spare8
DWORD PunishRate1; //spare2
DWORD PunishRate2; //spare3
double LegalOverFav; //spare6
};
struct CMoneyByWeight
{
DOUBLE BaseMoney;
DOUBLE OverMoney1;
DOUBLE OverMoney2;
};
FARE_CALL_DLL_API DOUBLE WINAPI CalWeightMoney(DWORD dwAxis, DWORD dwTotalWeight, DWORD Meters, const CTollRate &TollRate, CMoneyByWeight *pMoneyByWeight)
[StructLayout(LayoutKind.Sequential,CharSet = CharSet.Ansi, Pack = 1)]
public struct CMoneyByWeight
{
public double BaseMoney;
public double OverMoney1;
public double OverMoney2;
}
[StructLayout(LayoutKind.Sequential,CharSet = CharSet.Ansi, Pack = 1)]
public struct CTollRate
{
public UInt32 BaseWeightTollRate;
public double FavRate1;
public double FavRate2;
public UInt32 PunishRate1;
public UInt32 PunishRate2;
public double Spare;
}
[DllImport("FareCalcDll.DLL", EntryPoint = "CalWeightMoney", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern double CalWeightMoney(UInt32 dwAxis, UInt32 dwTotalWeight, UInt32 Meters, CTollRate TollRate,ref CMoneyByWeight pMoneyByWeight);
CMoneyByWeight cmoney = new CMoneyByWeight();
CTollRate rate = new CTollRate();
rate.BaseWeightTollRate = 8;
rate.FavRate1 = 6.0;
rate.FavRate2 = 3.0;
rate.PunishRate1 = 2;
rate.PunishRate2 = 4;
rate.Spare = 0;
double money = 0.0;
money=CalWeightMoney(2, 10000, 10000, rate, ref cmoney);
[DllImport("FareCalcDll.DLL", EntryPoint = "CalWeightMoney", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern double CalWeightMoney(UInt32 dwAxis, UInt32 dwTotalWeight, UInt32 Meters, CTollRate TollRate,IntPtr pMoneyByWeight);
CMoneyByWeight t = (CMoneyByWeight)Marshal.PtrToStructure(pMoneyByWeight, typeof(CMoneyByWeight));