2020年固件升级了二个功能：
1、（不太重要）增加了回铃音爆破音检测，这个功能主要用于在呼出电话时判断被叫方摘机。
2、固件拨号：
   上位机只需要发送一个拨号命令，固件收到后会自己拨号。

   上位机的demo程序，只有windows版本增加了固件拨号，代码只有几行，很简单，其他环境请参考windows demo：

//2020.6升级固件程序后，支持固件拨号，现在，高级命令实际上就是固件拨号命令----以后升级，可能会增加其他命令
void __fastcall TGoodtelDevice::WriteCommandAdvanced(char DeviceIndex, unsigned char command, String s)
{
    unsigned char buffer[512];
    DWORD BytesWritten;
    int i,len;

    buffer[0]=0x55;  buffer[1]=0xAA;    buffer[2]=0x66;  buffer[3]=0xBB; buffer[4]=command;
    //C++Builder的字符串，保存到数组buffer里
    len = s.Length();
    for (i=0; i<len; i++) buffer[5+i] = s[i+1];
    buffer[5+len] = 0;
    //固件拨号命令，支持参数（可以缺省）V,L,B
    buffer[6+len] = 'V';    buffer[7+len] = 24;                        //拨号音量=24
    buffer[8+len] = 'L';    buffer[9+len] = 128;    buffer[10+len] = 0;//拨号音的长度=128 + 0 * 256; ---- 双字节unsigned int，单位毫秒
    buffer[11+len] = 'B';   buffer[12+len] = 24;                       //偏置电压，默认24

    if (ErrorDevice[DeviceIndex]==0) {
        SetFilePointer(DeviceSTA[DeviceIndex] ,0,NULL,FILE_BEGIN);
        if (!WriteFile(DeviceSTA[DeviceIndex] ,buffer, 512, &BytesWritten, NULL)) ReportError(DeviceIndex,"Error while write command.");
    }
}

//固件拨号
char __fastcall TGoodtelDevice::FirmwareDial(char DeviceIndex,String phone)
{
    if (offhook[DeviceIndex]) {
        if (AllNumber(phone)) WriteCommandAdvanced(DeviceIndex,255,phone);else return 0;
        return 1;
    } else return 0;
}