/* * DevOp.cpp * * Created on: Jun 25, 2013 * Author: yiyu * QQ:1036184468 * Descriptoin:设备操作模块,各种泵阀之类的操作都在此处 */ #include #include #include #include #include #include #include #include //#include "LogInfo.h" #include #include "InputMethod.h" #include "InkJetPrinter.h" #include #include #include #include //#include #include #ifndef Q_OS_WIN32 #include #include #else #define ioctl(a,...) (0 == 0) #endif #include #include #include #include #include #include #include "SysPara.h" #include #include "DevOp.h" #include "Public.h" #include "myinclude.h" #include "qnamespace.h" #include #include #include "rfid/rfidfunction.h" #include unsigned short DACArray[64]; quint16 notGapDACArray[64]; quint16 fullColDACArray[64]; int fast_64k_5dot_full_default_dac[] = {65, 87, 105, 121, 134}; int fast_64k_5dot_adj_default_dac[] = {62, 77, 91, 105, 120}; int fast_64k_5dot_continue_default_dac[] = {0, 86, 102, 117, 133}; int fast_64k_7dot_full_default_dac[] = {65, 87, 104, 120, 134, 147, 157}; int fast_64k_7dot_adj_default_dac[] = {62, 77, 90, 102, 114, 126, 140}; int fast_64k_7dot_continue_default_dac[] = {0, 86, 102, 116, 130, 142, 155}; int fast_64k_9dot_full_default_dac[] = {65, 87, 105, 121, 137, 151, 164, 168, 181}; int fast_64k_9dot_adj_default_dac[] = {62, 77, 90, 103, 116, 131, 143, 157, 173}; int fast_64k_9dot_continue_default_dac[] = {0, 86, 102, 117, 132, 145, 161, 164, 181}; int normal_64k_5dot_full_default_dac[] = {65, 80, 91, 102, 113}; int normal_64k_5dot_adj_default_dac[] = {64, 76, 87, 97, 109}; int normal_64k_5dot_continue_default_dac[] = {0, 79, 91, 102, 113}; int normal_64k_7dot_full_default_dac[] = {65, 80, 92, 104, 115, 126, 137}; int normal_64k_7dot_adj_default_dac[] = {64, 76, 87, 97, 108, 119, 131}; int normal_64k_7dot_continue_default_dac[] = {0, 79, 91, 102, 114, 125, 136}; int normal_64k_9dot_full_default_dac[] = {65, 80, 92, 104, 115, 126, 137, 148, 158}; int normal_64k_9dot_adj_default_dac[] = {64, 76, 87, 97, 108, 119, 130, 141, 152}; int normal_64k_9dot_continue_default_dac[] = {0, 79, 91, 102, 114, 125, 136, 147, 157}; int normal_64k_12dot_full_default_dac[] = {65, 80, 92, 104, 115, 126, 137, 148, 159, 170, 179, 190}; int normal_64k_12dot_adj_default_dac[] = {64, 76, 87, 97, 108, 119, 129, 140, 150, 160, 170, 181}; int normal_64k_12dot_continue_default_dac[] = {0, 79, 91, 102, 114, 124, 135, 146, 156, 166, 176, 187}; int normal_64k_16dot_full_default_dac[] = {65, 80, 92, 104, 115, 126, 137, 148, 159, 170, 181, 192, 202, 212, 221, 227}; int normal_64k_16dot_adj_default_dac[] = {64, 76, 87, 97, 108, 119, 129, 140, 150, 160, 170, 180, 190, 200, 210, 220}; int normal_64k_16dot_continue_default_dac[] = {0, 79, 91, 102, 114, 124, 135, 146, 156, 166, 176, 187, 197, 207, 217, 226}; int normal_64k_24dot_full_default_dac[] = {65, 80, 90, 101, 112, 122, 133, 144, 155, 166, 177, 188, 198, 208, 217, 225,235,243,256,263,275,283,292,300}; int normal_64k_24dot_adj_default_dac[] = {64, 75, 85, 95, 104, 114, 123, 135, 145, 154, 165, 175, 185, 195, 205, 215,224,232,242,252,260,269,278,287}; int normal_64k_24dot_continue_default_dac[] = {0, 79, 89, 99, 110, 120, 130, 140, 150, 160, 171, 182, 192, 202, 210, 220,230,239,248,257,266,275,284,293}; int slow1_64k_5dot_full_default_dac[] = {65, 77, 87, 97, 107}; int slow1_64k_5dot_adj_default_dac[] = {65, 75, 85, 95, 105}; int slow1_64k_5dot_continue_default_dac[] = {0, 77, 87, 97, 107}; int slow1_64k_7dot_full_default_dac[] = {65, 77, 87, 97, 107, 117, 127}; int slow1_64k_7dot_adj_default_dac[] = {65, 75, 85, 95, 104, 113, 124}; int slow1_64k_7dot_continue_default_dac[] = {0, 77, 87, 97, 107, 117, 127}; int slow1_64k_9dot_full_default_dac[] = {65, 77, 87, 97, 107, 117, 127, 137, 146}; int slow1_64k_9dot_adj_default_dac[] = {65, 75, 85, 95, 104, 113, 123, 133, 143}; int slow1_64k_9dot_continue_default_dac[] = {0, 77, 87, 96, 106, 116, 126, 136, 146}; int slow1_64k_12dot_full_default_dac[] = {65, 77, 87, 97, 107, 117, 127, 137, 147, 157, 167, 176}; int slow1_64k_12dot_adj_default_dac[] = {65, 75, 85, 94, 104, 113, 123, 133, 142, 151, 161, 171}; int slow1_64k_12dot_continue_default_dac[] = {0, 77, 87, 96, 106, 116, 126, 136, 146, 155, 165, 175}; int slow1_64k_16dot_full_default_dac[] = {65, 77, 87, 97, 107, 117, 127, 137, 147, 157, 167, 176, 186, 195, 204, 213}; int slow1_64k_16dot_adj_default_dac[] = {65, 75, 85, 94, 104, 113, 123, 133, 142, 151, 161, 170, 179, 188, 197, 206}; int slow1_64k_16dot_continue_default_dac[] = {0, 77, 87, 96, 106, 116, 126, 136, 146, 155, 165, 174, 183, 192, 201, 210}; int slow1_64k_24dot_full_default_dac[] = {65, 76, 85, 94, 103, 112, 121, 130, 139, 148, 157, 166, 175, 184, 192, 201,210,219,228,236,245,253,261,268}; int slow1_64k_24dot_adj_default_dac[] = {65, 74, 83, 92, 101, 109, 117, 126, 134, 142, 150, 159, 168, 176, 185, 193,202,210,218,226,234,242,250,257}; int slow1_64k_24dot_continue_default_dac[] = {0, 76, 84, 93, 101, 110, 119, 128, 137, 146, 153, 162, 171, 180, 189, 198,206,215,223,231,239,247,255,263}; /* ==============64k end ========================*/ /* ============== 96k ========================*/ int fast_96k_5dot_full_default_dac[] = {68, 92, 107, 118, 125}; int fast_96k_5dot_adj_default_dac[] = {66, 77, 88, 99, 109}; int fast_96k_5dot_continue_default_dac[] = {0, 91, 103, 115, 127}; int fast_96k_5dot_full_default_dac_H[] = {80, 108, 124, 144, 156}; int fast_96k_5dot_adj_default_dac_H[] = {74, 89, 105, 121, 136}; int fast_96k_5dot_continue_default_dac_H[] = {0, 104, 120, 136, 152}; int fast_96k_7dot_full_default_dac[] = {68, 92, 107, 120, 132, 142, 151}; int fast_96k_7dot_adj_default_dac[] = {62, 74, 85, 97, 108, 120, 132}; int fast_96k_7dot_continue_default_dac[] = {0, 85, 98, 111, 124, 137, 150}; int fast_96k_7dot_full_default_dac_H[] = {80, 108, 125, 144, 160, 176, 186}; int fast_96k_7dot_adj_default_dac_H[] = {76, 91, 106, 118, 132, 146, 164}; int fast_96k_7dot_continue_default_dac_H[] = {0, 104, 120, 136, 152, 166, 184}; int fast_96k_7dot_full_default_dac_S[] = {80, 108, 124, 138, 152, 164, 174}; int fast_96k_7dot_adj_default_dac_S[] = {76, 91, 102, 114, 127, 140, 152}; int fast_96k_7dot_continue_default_dac_S[] = {0, 104, 120, 134, 147, 160, 172}; int fast_96k_9dot_full_default_dac[] = {68, 92, 107, 120, 132, 142, 150, 146, 154}; int fast_96k_9dot_adj_default_dac[] = {62, 73, 84, 95, 106, 117, 128, 139, 150}; int fast_96k_9dot_continue_default_dac[] = {0, 85, 98, 111, 124, 137, 148, 146, 153}; int fast_96k_9dot_full_default_dac_S[] = {68, 92, 107, 120, 131, 142, 150, 160, 170}; int fast_96k_9dot_adj_default_dac_S[] = {60, 72, 83, 94, 105, 116, 127, 138, 148}; int fast_96k_9dot_continue_default_dac_S[] = {0, 85, 98, 113, 125, 141, 153, 164, 172}; int fast_96k_12dot_full_default_dac[] = {60, 82, 96, 110, 124, 138, 152, 152, 164, 176, 188, 200}; int fast_96k_12dot_adj_default_dac[] = {57, 71, 83, 95, 107, 119, 131, 143, 155, 167, 179, 191}; int fast_96k_12dot_continue_default_dac[] = {0, 82, 98, 113, 126, 139, 152, 152, 164, 176, 188, 200}; int fast_96k_12dot_full_default_dac_U[] = {68, 92, 106, 120, 132, 144, 154, 154, 166, 178, 190, 200}; int fast_96k_12dot_adj_default_dac_U[] = {0, 65, 83, 95, 108, 120, 132, 144, 156, 168, 180, 192}; int fast_96k_12dot_continue_default_dac_U[] = {0, 0, 95, 111, 126 , 139, 151, 153, 165, 177, 188, 200}; int fast_96k_12dot_full_default_dac_UD[] = {63, 85, 99, 111, 123, 135, 147, 147, 158, 169, 180, 190}; int fast_96k_12dot_adj_default_dac_UD[] = {0, 60, 77, 88, 99, 110, 122, 134, 146, 158, 170, 182}; int fast_96k_12dot_continue_default_dac_UD[] = {0, 0, 90, 106, 121, 134, 146, 148, 160, 171, 181, 190}; int fast_96k_12dot_full_default_dac_H[] = {68, 90, 108, 125, 141, 156, 170, 170, 180, 193, 204, 214}; int fast_96k_12dot_adj_default_dac_H[] = {59, 73, 86, 99, 112, 125, 138, 151, 164, 177, 190, 203}; int fast_96k_12dot_continue_default_dac_H[] = {0, 87, 102, 117, 131 , 145, 159, 161, 173, 186, 199, 212}; int fast_96k_12dot_full_default_dac_HU[] = {68, 90, 108, 125, 141, 156, 169, 170, 181, 192, 203, 212}; int fast_96k_12dot_adj_default_dac_HU[] = {0, 70, 86, 99, 112, 125, 138, 151, 164, 177, 190, 202}; int fast_96k_12dot_continue_default_dac_HU[] = {0, 0, 100, 117, 130, 143, 157, 160, 173, 186, 199, 211}; int normal_96k_5dot_full_default_dac[] = {70, 84, 96, 106, 116}; int normal_96k_5dot_adj_default_dac[] = {70, 81, 91, 101, 111}; int normal_96k_5dot_continue_default_dac[] = {0, 82, 94, 104, 114}; int normal_96k_5dot_full_default_dac_H[] = {80, 96, 110, 124, 134}; int normal_96k_5dot_adj_default_dac_H[] = {78, 91, 105, 117, 129}; int normal_96k_5dot_continue_default_dac_H[] = {0, 94, 108, 121, 134}; int normal_96k_7dot_full_default_dac[] = {70, 84, 96, 106, 116, 126, 135}; int normal_96k_7dot_adj_default_dac[] = {69, 80, 90, 100, 110, 120, 129}; int normal_96k_7dot_continue_default_dac[] = {0, 82, 94, 104, 114, 124, 134}; int normal_96k_7dot_full_default_dac_H[] = {80, 96, 110, 124, 138, 152, 162}; int normal_96k_7dot_adj_default_dac_H[] = {78, 91, 105, 118, 131, 144, 156}; int normal_96k_7dot_continue_default_dac_H[] = {0, 94, 108, 121, 134, 147, 160}; int normal_96k_9dot_full_default_dac[] = {70, 84, 94, 104, 114, 124, 134, 144, 150}; int normal_96k_9dot_adj_default_dac[] = {68, 78, 88, 98, 107, 117, 126, 136, 143}; int normal_96k_9dot_continue_default_dac[] = {0, 82, 92, 102, 112, 122, 132, 142, 152}; int normal_96k_9dot_full_default_dac_H[] = {80, 98, 112, 126, 138, 148, 158, 168, 178}; int normal_96k_9dot_adj_default_dac_H[] = {76, 88, 100, 112, 124, 135, 146, 157, 170}; int normal_96k_9dot_continue_default_dac_H[] = {0, 94, 108, 120, 132, 144, 155, 165, 176}; int normal_96k_12dot_full_default_dac[] = {70, 86, 97, 106, 115, 124, 133, 142, 151, 160, 169, 176}; int normal_96k_12dot_adj_default_dac[] = {68, 77, 86, 95, 104, 113, 122, 131, 140, 149, 158, 167}; int normal_96k_12dot_continue_default_dac[] = {0, 83, 92, 101, 110, 119, 128, 137, 146, 156, 165, 174}; int normal_96k_12dot_full_default_dac_U[] = {72, 83, 92, 101, 110, 119, 128, 137, 146, 155, 164}; int normal_96k_12dot_adj_default_dac_U[] = {0, 74, 83, 92, 101, 110, 119, 128, 137, 146, 155, 164}; int normal_96k_12dot_continue_default_dac_U[] = {0, 0, 92, 101, 110, 119, 128, 137, 146, 155, 164, 173}; int normal_96k_12dot_full_default_dac_H[] = {80, 94, 106, 118, 130, 142, 153, 163, 173, 183, 193, 200}; int normal_96k_12dot_adj_default_dac_H[] = {76, 87, 98, 108, 118, 128, 138, 148, 158, 168, 178, 189}; int normal_96k_12dot_continue_default_dac_H[] = {0, 92, 104, 115, 126, 137, 148, 158, 168, 178, 188, 198}; int normal_96k_12dot_full_default_dac_HU[] = {78, 92, 102, 112, 122, 132, 142, 152, 162, 172, 182, 190}; int normal_96k_12dot_adj_default_dac_HU[] = {0, 72, 83, 93, 103, 113, 123, 134, 146, 158, 170, 180}; int normal_96k_12dot_continue_default_dac_HU[] = {0, 0, 92, 102, 112, 122, 132, 143, 155, 167, 179, 188}; int normal_96k_16dot_full_default_dac[] = {70, 80, 88, 98, 107, 116, 125, 134, 143, 153, 162, 171, 180, 189, 198, 205}; int normal_96k_16dot_adj_default_dac[] = {64, 74, 88, 89, 97, 105, 113, 121, 129, 138, 147, 156, 165, 174, 183, 192}; int normal_96k_16dot_continue_default_dac[] = {0, 77, 86, 95, 104, 113, 121, 130, 139, 147, 156, 166, 175, 185, 194,200}; int normal_96k_16dot_full_default_dac_H[] = {80, 96, 108, 118, 128, 138, 148, 158, 168, 178, 188, 198, 208, 218, 228, 236}; int normal_96k_16dot_adj_default_dac_H[] = {76, 87, 98, 108, 118, 128, 137, 146, 155, 164, 173, 183, 193, 203, 214, 224}; int normal_96k_16dot_continue_default_dac_H[] = {0, 92, 104, 114, 124, 134, 144, 154, 164, 174, 184, 194, 204, 214, 224, 234}; int slow1_96k_5dot_full_default_dac[] = {70, 80, 88, 97, 104}; int slow1_96k_5dot_adj_default_dac[] = {68, 76, 85, 93, 101}; int slow1_96k_5dot_continue_default_dac[] = {0, 79, 88, 96, 103}; int slow1_96k_7dot_full_default_dac[] = {70, 80, 88, 97, 104, 111, 118}; int slow1_96k_7dot_adj_default_dac[] = {68, 76, 85, 93, 101, 108, 113}; int slow1_96k_7dot_continue_default_dac[] = {0, 79, 88, 96, 103, 110, 117}; int slow1_96k_9dot_full_default_dac[] = {70, 81, 88, 97, 104, 112, 119, 126, 133}; int slow1_96k_9dot_adj_default_dac[] = {68, 76, 84, 91, 99, 106, 113, 120, 127}; int slow1_96k_9dot_continue_default_dac[] = {0, 79, 88, 96, 103, 110, 117, 124, 131}; int slow1_96k_12dot_full_default_dac[] = {70, 81, 88, 97, 104, 112, 119, 126, 133, 140, 147, 155}; int slow1_96k_12dot_adj_default_dac[] = {68, 76, 84, 91, 99, 106, 113, 120, 127, 134, 141, 147}; int slow1_96k_12dot_continue_default_dac[] = {0, 79, 88, 96, 103, 110, 117, 124, 131, 138, 145, 152}; int slow1_96k_16dot_full_default_dac[] = {70, 81, 88, 97, 104, 112, 119, 126, 133, 140, 147, 154, 161, 168, 175, 181}; int slow1_96k_16dot_adj_default_dac[] = {68, 76, 84, 91, 99, 106, 113, 120, 127, 134, 141, 148, 155, 162, 169, 176}; int slow1_96k_16dot_continue_default_dac[] = {0, 79, 88, 96, 103, 110, 117, 124, 131, 138, 145, 152, 159, 166, 173, 180}; int slow1_96k_24dot_full_default_dac[] = {70, 80 , 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 173, 181, 187,194,201,208,215,222,229,236,242}; int slow1_96k_24dot_adj_default_dac[] = {69, 76, 84, 91, 98, 106, 114, 121, 128, 136, 143, 150, 157, 164, 171, 177,183,190,196,203,209,215,221,227}; int slow1_96k_24dot_continue_default_dac[] = {0, 79, 87, 95, 103, 110, 118, 125, 133, 140, 148, 155, 161, 169, 175, 181,186,195,200,208,215,222,228,234}; int fast_96k_5dot_full_default_dac_F[] = {70, 92, 107, 120, 130}; int fast_96k_7dot_full_default_dac_F[] = {70, 92, 107, 120, 132, 142, 151}; int normal_96k_5dot_full_default_dac_F[] = {70, 85, 95, 106, 116}; int normal_96k_7dot_full_default_dac_F[] = {70, 85, 95, 107, 117, 126, 135}; /* ==============96k end ========================*/ /* ==============128k ========================*/ int fast_128k_5dot_full_default_dac[] = {80, 106, 121, 135, 145}; int fast_128k_5dot_adj_default_dac[] = {77, 87, 100, 111, 122}; int fast_128k_5dot_continue_default_dac[] = {0, 101, 114, 128, 142}; int fast_128k_7dot_full_default_dac[] = {79, 105, 122, 140, 155, 169, 178}; int fast_128k_7dot_adj_default_dac[] = {75, 87, 102, 113, 130, 142, 157}; int fast_128k_7dot_continue_default_dac[] = { 0, 101, 119, 134, 149, 164, 178}; int fast_128k_7dot_full_default_dac_A[] = {79, 105, 122, 137, 149, 164, 175}; int fast_128k_7dot_adj_default_dac_A[] = {73, 84, 98, 112, 126, 140, 154}; int fast_128k_7dot_continue_default_dac_A[] = { 0, 100, 117, 132, 147, 162, 175}; int fast_128k_5dot_full_default_dac_A[] = {80, 106, 121, 140, 154}; int fast_128k_5dot_adj_default_dac_A[] = {75, 90, 106, 120, 134}; int fast_128k_5dot_continue_default_dac_A[] = {0, 105, 127, 142, 158}; int fast_128k_5dot_full_default_dac_B[] = {83, 110, 123, 140, 148}; int fast_128k_5dot_adj_default_dac_B[] = {78, 90, 103, 114, 126}; int fast_128k_5dot_continue_default_dac_B[] = {0, 105, 118, 133, 146}; int fast_128k_7dot_full_default_dac_B[] = {79, 105, 122, 140, 156, 167, 178}; int fast_128k_7dot_adj_default_dac_B[] = {75, 87, 101, 114, 128, 142, 156}; int fast_128k_7dot_continue_default_dac_B[] = { 0, 105, 120, 135, 150, 165, 180}; int fast_128k_7dot_full_default_dac_C[] = {79, 105, 120, 135, 145, 155, 165}; int fast_128k_7dot_adj_default_dac_C[] = {71, 85, 96, 107, 120, 133, 143}; int fast_128k_7dot_continue_default_dac_C[] = { 0, 97, 113, 126, 139, 152, 165}; int fast_128k_9dot_full_default_dac_A[] = {74, 99, 115, 130, 140, 150, 163, 158, 166}; int fast_128k_9dot_adj_default_dac_A[] = {72, 82, 92, 104, 115, 127, 138, 149, 160}; int fast_128k_9dot_continue_default_dac_A[] = {0, 95, 108, 121, 133, 145, 158, 157, 169}; int fast_128k_9dot_full_default_dac_C[] = {78, 108, 125, 143, 158, 172, 185, 180, 191}; int fast_128k_9dot_adj_default_dac_C[] = {73, 86, 99, 112, 125, 138, 151, 164, 178}; int fast_128k_9dot_continue_default_dac_C[] = {0, 100, 116, 132, 144, 158, 174, 176, 191}; int fast_128k_9dot_full_default_dac_D[] = {80, 106, 123, 137, 150, 163, 173, 185, 192}; int fast_128k_9dot_adj_default_dac_D[] = {73, 84, 96, 106, 116, 126, 136, 146, 156}; int fast_128k_9dot_continue_default_dac_D[] = {0, 102, 116, 134, 144, 158, 168, 182, 192}; int fast_128k_9dot_full_default_dac_B[] = {74, 100, 120, 140, 155, 170, 190, 188, 199}; int fast_128k_9dot_adj_default_dac_B[] = {70, 86, 102, 117, 132, 147, 162, 177, 190}; int fast_128k_9dot_continue_default_dac_B[] = {0, 100, 120, 136, 152, 168, 185, 187, 200}; int fast_128k_9dot_full_default_dac[9] = {74, 99, 115, 130, 140, 153, 163, 158, 166}; int fast_128k_9dot_adj_default_dac[] = {72, 83, 96, 106, 118, 127, 138, 149, 158}; int fast_128k_9dot_continue_default_dac[] = {0, 95, 108, 121, 133, 145, 158, 157, 167}; int normal_128k_5dot_full_default_dac[] = {80, 96, 107, 118, 128}; int normal_128k_5dot_adj_default_dac[] = {77, 87, 98, 108, 118}; int normal_128k_5dot_continue_default_dac[] = {0, 94, 105, 116, 127}; int normal_128k_7dot_full_default_dac[] = {80, 96, 107, 118, 128, 137, 143}; int normal_128k_7dot_adj_default_dac[] = {77, 87, 98, 108, 116, 127, 134}; int normal_128k_7dot_continue_default_dac[] = {0, 94, 104, 115, 126, 135, 144}; int normal_128k_9dot_full_default_dac[] = {80, 96, 107, 118, 128, 137, 143, 154, 162}; int normal_128k_9dot_adj_default_dac[] = {77, 87, 98, 108, 118, 128, 137, 147, 156}; int normal_128k_9dot_continue_default_dac[] = {0, 93, 104, 115, 126, 135, 140, 151, 161}; unsigned short fast_128k_7dot_dac[]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 900, 0, 0, 0, 0, 0, 0, 0, 0, 0,1050, 0, 0, 0, 0, 0, 0, 0, 920,1240, 0, 0, 0, 0, 0, 0, 0, 0, 0,1240, 0, 0, 0, 0, 0, 0, 940, 0,1350, 0, 0, 0, 0, 0, 0, 0,1050,1400, 0, 0, 0, 0, 0, 0, 950,1280,1460, 0, 0, 0, 0, 0, 0, 0, 0, 0,1380, 0, 0, 0, 0, 0, 920, 0, 0,1510, 0, 0, 0, 0, 0, 0,1050, 0,1510, 0, 0, 0, 0, 0, 950,1280, 0,1600, 0, 0, 0, 0, 0, 0, 0,1220,1600, 0, 0, 0, 0, 0, 940, 0,1380,1600, 0, 0, 0, 0, 0, 0,1050,1400,1600, 0, 0, 0, 0, 0, 950,1290,1490,1630, 0, 0, 0, 0, 0, 0, 0, 0, 0,1550, 0, 0, 0, 0, 950, 0, 0, 0,1670, 0, 0, 0, 0, 0,1050, 0, 0,1700, 0, 0, 0, 0, 950,1280, 0, 0,1730, 0, 0, 0, 0, 0, 0,1240, 0,1730, 0, 0, 0, 0, 940, 0,1400, 1,1600, 0, 0, 0, 0, 0,1050,1400, 1,1600, 0, 0, 0, 0, 930,1280,1480, 1,1600, 0, 0, 0, 0, 0, 0, 0,5460,1600, 0, 0, 0, 0, 950, 0, 0,5626,1620, 0, 0, 0, 0, 0,1070, 0,5626,1620, 0, 0, 0, 0, 940,1280, 0,5696,1620, 0, 0, 0, 0, 0, 0,1260,5706,1620, 0, 0, 0, 0, 950, 0,1400,5746,1620, 0, 0, 0, 0, 0,1070,1440,5746,1620, 0, 0, 0, 0, 950,1290,1480,5746,1620, 0, 0, 0, 0, 0, 0, 0, 0, 0,1700, 0, 0, 0, 940, 0, 0, 0, 0,1830, 0, 0, 0, 0,1050, 0, 0, 0,1840, 0, 0, 0, 940,1260, 0, 0, 0,1760, 0, 0, 0, 0, 0,1240, 0, 0,1880, 0, 0, 0, 940, 0,1380, 0, 1,1780, 0, 0, 0, 0,1060,1400, 0, 1,1780, 0, 0, 0, 940,1260,1440, 0, 1,1780, 0, 0, 0, 0, 0, 0,1400, 1,1780, 0, 0, 0, 940, 0, 0,1500, 1,1780, 0, 0, 0, 0,1060, 0,1540, 1,1780, 0, 0, 0, 940,1280, 0,1600, 1,1780, 0, 0, 0, 0, 0,1240,1600, 1,1780, 0, 0, 0, 940, 0,1400,1640, 1,1780, 0, 0, 0, 0,1060,1430,1640, 1,1780, 0, 0, 0, 940,1260,1480,1660, 1,1780, 0, 0, 0, 0, 0, 0, 0,5646,1780, 0, 0, 0, 940, 0, 0, 0,5796,1800, 0, 0, 0, 0,1060, 0, 0,5796,1800, 0, 0, 0, 940,1260, 0, 0,5856,1800, 0, 0, 0, 0, 0,1240, 0,5856,1800, 0, 0, 0, 940, 0,1400, 0,5866,1800, 0, 0, 0, 0,1060,1420, 0,5866,1800, 0, 0, 0, 940,1280,1480, 0,5876,1800, 0, 0, 0, 0, 0, 0,1390,5876,1800, 0, 0, 0, 940, 0, 0,1540,5896,1800, 0, 0, 0, 0,1050, 0,1540,5896,1800, 0, 0, 0, 940,1260, 0,1660,5916,1800, 0, 0, 0, 0, 0,1240,1660,5916,1800, 0, 0, 0, 950, 0,1400,1670,5926,1800, 0, 0, 0, 0,1060,1420,1670,5926,1800, 0, 0, 0, 950,1260,1460,1670,5926,1800, 0, 0, 0, 0, 0, 0, 0, 0, 0,1830, 0, 0, 930, 0, 0, 0, 0, 0,1830, 0, 0, 0,1050, 0, 0, 0, 0,1950, 0, 0, 940,1280, 0, 0, 0, 0,1980, 0, 0, 0, 0,1240, 0, 0, 0,1980, 0, 0, 940, 0,1380, 0, 0, 0,2000, 0, 0, 0,1060,1420, 0, 0, 0,2000, 0, 0, 940,1260,1440, 0, 0, 0,2000, 0, 0, 0, 0, 0,1390, 0, 0,2000, 0, 0, 940, 0, 0,1530, 0, 0,2000, 0, 0, 0,1060, 0,1540, 0, 0,2000, 0, 0, 940,1260, 0,1600, 0, 1,1870, 0, 0, 0, 0,1240,1620, 0, 0,2000, 0, 0, 940, 0,1410,1620, 0, 1,1900, 0, 0, 0,1060,1420,1620, 0, 1,1900, 0, 0, 940,1260,1460,1640, 0, 1,1900, 0, 0, 0, 0, 0, 0,1570, 1,1900, 0, 0, 950, 0, 0, 0,1700, 1,1900, 0, 0, 0,1060, 0, 0,1710, 1,1900, 0, 0, 940,1280, 0, 0,1750, 1,1900, 0, 0, 0, 0,1260, 0,1750, 1,1900, 0, 0, 940, 0,1400, 0,1770, 1,1900, 0, 0, 0,1060,1420, 0,1770, 1,1900, 0, 0, 950,1280,1480, 0,1810, 1,1900, 0, 0, 0, 0, 0,1400,1800, 1,1910, 0, 0, 950, 0, 0,1560,1830, 1,1920, 0, 0, 0,1060, 0,1580,1830, 1,1920, 0, 0, 940,1280, 0,1630,1830, 1,1920, 0, 0, 0, 0,1260,1630,1830, 1,1920, 0, 0, 950, 0,1420,1650,1840, 1,1920, 0, 0, 0,1070,1430,1650,1840, 1,1920, 0, 0, 950,1280,1480,1680,1850, 1,1920, 0, 0, 0, 0, 0, 0, 0,5776,1930, 0, 0, 940, 0, 0, 0, 0,5896,1930, 0, 0, 0,1070, 0, 0, 1,5816,1930, 0, 0, 950,1280, 0, 0, 1,5836,1930, 0, 0, 0, 0,1240, 0, 1,5836,1930, 0, 0, 950, 0,1380, 0, 1,5836,1930, 0, 0, 0,1070,1420, 0, 1,5836,1930, 0, 0, 950,1280,1480, 0, 1,5836,1930, 0, 0, 0, 0, 0,1480, 1,5876,1930, 0, 0, 940, 0, 0,1550, 1,5876,1930, 0, 0, 0,1070, 0,1550, 1,5876,1930, 0, 0, 940,1280, 0,1620, 1,5876,1930, 0, 0, 0, 0,1240,1620, 1,5876,1930, 0, 0, 940, 0,1380,1620, 1,5876,1930, 0, 0, 0,1070,1440,1660, 1,5876,1930, 0, 0, 950,1290,1490,1680, 1,1780,2080, 0, 0, 0, 0, 0, 0,5656,5876,1930, 0, 0, 950, 0, 0, 1,5676,5876,1930, 0, 0, 0,1070, 0, 1,5676,5876,1930, 0, 0, 940,1280, 0, 1,1580,6036,1930, 0, 0, 0, 0,1240, 1,1580,6036,1930, 0, 0, 940, 0,1400, 1,1580,6036,1930, 0, 0, 0,1060,1440, 1,1580,6036,1930, 0, 0, 950,1280,1480, 0,1780,6056,1930, 0, 0, 0, 0, 0,1420,1790,6056,1930, 0, 0, 950, 0, 1,1400,1770,6056,1930, 0, 0, 0,1070, 1,1400,1770,6056,1930, 0, 0, 950,1280, 0,1630,1850,6091,1940, 0, 0, 0, 0,1290,1650,1850,6091,1940, 0, 0, 950, 0,1400,1670,1850,6091,1940, 0, 0, 0,1100,1460,1670,1850,6091,1940, 0, 0, 960,1320,1570,1760,1980, 1,1940, 0, 0 }; unsigned short normal_128k_7dot_dac[]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 970, 0, 0, 0, 0, 0, 0, 0, 0, 0,1115, 0, 0, 0, 0, 0, 0, 0, 5066,1180, 0, 0, 0, 0, 0, 0, 0, 0, 0,1245, 0, 0, 0, 0, 0, 0, 970, 1,1310, 0, 0, 0, 0, 0, 0, 0,5211,1340, 0, 0, 0, 0, 0, 0, 5086,5296,1340, 0, 0, 0, 0, 0, 0, 0, 0, 0,1385, 0, 0, 0, 0, 0, 970, 1, 0,1430, 0, 0, 0, 0, 0, 0,1120, 1,1450, 0, 0, 0, 0, 0, 5076,1200, 1,1460, 0, 0, 0, 0, 0, 0, 0,5356,1490, 0, 0, 0, 0, 0, 980, 1,5416,1490, 0, 0, 0, 0, 0, 0,5256,5456,1480, 0, 0, 0, 0, 0, 5086,5316,5456,1480, 0, 0, 0, 0, 0, 0, 0, 0, 0,1535, 0, 0, 0, 0, 980, 1, 0, 0,1560, 0, 0, 0, 0, 0,1140, 1, 0,1580, 0, 0, 0, 0, 5076,1200, 1, 0,1580, 0, 0, 0, 0, 0, 0,1275, 1,1585, 0, 0, 0, 0, 980, 1,1310, 1,1585, 0, 0, 0, 0, 0,5246,1360, 1,1585, 0, 0, 0, 0, 5076,5296,1360, 1,1620, 0, 0, 0, 0, 0, 0, 0,5521,1645, 0, 0, 0, 0, 980, 1, 0,5546,1635, 0, 0, 0, 0, 0,1140, 1,5566,1635, 0, 0, 0, 0, 5076,1200, 1,5576,1635, 0, 0, 0, 0, 0, 0,5406,5626,1635, 0, 0, 0, 0, 980, 1,5436,5616,1635, 0, 0, 0, 0, 0,5276,5476,5596,1635, 0, 0, 0, 0, 5086,5316,5456,5596,1635, 0, 0, 0, 0, 0, 0, 0, 0, 0,1680, 0, 0, 0, 980, 1, 0, 0, 0,1700, 0, 0, 0, 0,1130, 1, 0, 0,1700, 0, 0, 0, 5076,1200, 1, 0, 0,1720, 0, 0, 0, 0, 0,1280, 1, 0,1720, 0, 0, 0, 980, 1,1315, 1, 0,1720, 0, 0, 0, 0,5236,1360, 1, 0,1740, 0, 0, 0, 5086,5296,1360, 1, 0,1750, 0, 0, 0, 0, 0, 0,1430, 1,1750, 0, 0, 0, 980, 1, 0,1460, 1,1750, 0, 0, 0, 0,1140, 1,1470, 1,1750, 0, 0, 0, 5076,1200, 1,1480, 1,1750, 0, 0, 0, 0, 0,5396,1500, 1,1760, 0, 0, 0, 980, 1,5426,1510, 1,1760, 0, 0, 0, 0,5256,5456,1510, 1,1760, 0, 0, 0, 5076,5316,5456,1510, 1,1770, 0, 0, 0, 0, 0, 0, 0,5666,1780, 0, 0, 0, 980, 1, 0, 0,5676,1780, 0, 0, 0, 0,1130, 1, 0,5686,1780, 0, 0, 0, 5076,1200, 1, 0,5696,1780, 0, 0, 0, 0, 0,1290, 1,5716,1780, 0, 0, 0, 980, 1,1330, 1,5756,1780, 0, 0, 0, 0,5236,1360, 1,5756,1780, 0, 0, 0, 5076,5296,1360, 1,5756,1780, 0, 0, 0, 0, 0, 0,5526,5746,1780, 0, 0, 0, 980, 1, 0,5556,5756,1780, 0, 0, 0, 0,1130, 1,5586,5756,1780, 0, 0, 0, 5076,1200, 1,5586,5756,1780, 0, 0, 0, 0, 0,5386,5601,5756,1780, 0, 0, 0, 980, 1,5436,5601,5756,1780, 0, 0, 0, 0,5246,5466,5601,5756,1780, 0, 0, 0, 5086,5306,5476,5601,5756,1780, 0, 0, 0, 0, 0, 0, 0, 0, 0,1810, 0, 0, 980, 1, 0, 0, 0, 0,1810, 0, 0, 0,1130, 1, 0, 0, 0,1840, 0, 0, 5076,1200, 1, 0, 0, 0,1840, 0, 0, 0, 0,1290, 1, 0, 0,1850, 0, 0, 980, 1,1330, 1, 0, 0,1850, 0, 0, 0,5231,1360, 1, 0, 0,1850, 0, 0, 5076,5296,1360, 1, 0, 0,1850, 0, 0, 0, 0, 0,1410, 1, 0,1850, 0, 0, 980, 1, 0,1440, 1, 0,1860, 0, 0, 0,1135, 1,1470, 1, 0,1860, 0, 0, 5076,1200, 1,1480, 1, 0,1870, 0, 0, 0, 0,5381,1505, 1, 0,1870, 0, 0, 980, 1,5416,1510, 1, 0,1870, 0, 0, 0,5236,5456,1510, 1, 0,1870, 0, 0, 5086,5296,5456,1510, 1, 0,1880, 0, 0, 0, 0, 0, 0,1550, 1,1880, 0, 0, 980, 1, 0, 0,1570, 1,1880, 0, 0, 0,1130, 1, 0,1590, 1,1880, 0, 0, 5076,1200, 1, 0,1610, 1,1890, 0, 0, 0, 0,1300, 1,1620, 1,1890, 0, 0, 980, 1,1330, 1,1620, 1,1890, 0, 0, 0,5236,1360, 1,1630, 1,1890, 0, 0, 5076,5296,1360, 1,1640, 1,1890, 0, 0, 0, 0, 0,5506,1640, 1,1900, 0, 0, 980, 1, 0,5546,1640, 1,1900, 0, 0, 0,1135, 1,5556,1640, 1,1900, 0, 0, 5076,1200, 1,5556,1640, 1,1900, 0, 0, 0, 0,5386,5596,1640, 1,1900, 0, 0, 980, 1,5436,5606,1650, 1,1910, 0, 0, 0,5226,5456,5606,1650, 1,1910, 0, 0, 5086,5306,5466,5606,1650, 1,1910, 0, 0, 0, 0, 0, 0, 0,5791,1910, 0, 0, 980, 1, 0, 0, 0,5816,1910, 0, 0, 0,1130, 1, 0, 0,5816,1910, 0, 0, 5076,1200, 1, 0, 0,5816,1910, 0, 0, 0, 0,1290, 1, 0,5816,1910, 0, 0, 990, 1,1320, 1, 0,5816,1910, 0, 0, 0,5226,1360, 1, 0,5836,1910, 0, 0, 5086,5306,1360, 1, 0,5836,1910, 0, 0, 0, 0, 0,1420, 1,5846,1910, 0, 0, 980, 1, 0,1450, 1,5846,1910, 0, 0, 0,1130, 1,1450, 1,5846,1910, 0, 0, 5076,1200, 1,1480, 1,5866,1910, 0, 0, 0, 0,5386,1480, 1,5866,1910, 0, 0, 980, 1,5426,1510, 1,5876,1920, 0, 0, 0,5236,5476,1510, 1,5886,1920, 0, 0, 5086,5306,5456,1510, 1,5886,1920, 0, 0, 0, 0, 0, 0,5641,5886,1920, 0, 0, 980, 1, 0, 0,5646,5886,1920, 0, 0, 0,1130, 1, 0,5676,5886,1920, 0, 0, 5076,1200, 1, 0,5696,5886,1920, 0, 0, 0, 0,1290, 1,5706,5896,1920, 0, 0, 980, 1,1310, 1,5706,5896,1920, 0, 0, 0,5226,1350, 1,5706,5896,1920, 0, 0, 5086,5306,1350, 1,5706,5896,1920, 0, 0, 0, 0, 0,5506,5736,5896,1920, 0, 0, 980, 1, 0,5526,5736,5896,1920, 0, 0, 0,1130, 1,5546,5736,5896,1920, 0, 0, 5076,1200, 1,5546,5736,5896,1920, 0, 0, 0, 0,5386,5586,5736,5896,1920, 0, 0, 980, 1,5406,5586,5736,5896,1920, 0, 0, 0,5226,5456,5606,5756,5896,1920, 0, 0, 5096,5316,5456,5606,5756,5906,1940, 0, 0 }; unsigned short fast_128k_9dot_dac[]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 950, 0, 0, 0, 0, 0, 0, 0, 0, 0,1070, 0, 0, 0, 0, 0, 0, 0, 970,1300, 0, 0, 0, 0, 0, 0, 0, 0, 0,1240, 0, 0, 0, 0, 0, 0, 970, 0,1410, 0, 0, 0, 0, 0, 0, 0,1090,1450, 0, 0, 0, 0, 0, 0, 970,1320,1500, 0, 0, 0, 0, 0, 0, 0, 0, 0,1440, 0, 0, 0, 0, 0, 970, 0, 0,1540, 0, 0, 0, 0, 0, 0,1090, 0,1560, 0, 0, 0, 0, 0, 970,1320, 0,1630, 0, 0, 0, 0, 0, 0, 0,1250,1630, 0, 0, 0, 0, 0, 970, 0,1430,1660, 0, 0, 0, 0, 0, 0,1090,1460,1660, 0, 0, 0, 0, 0, 990,1340,1540,1700, 0, 0, 0, 0, 0, 0, 0, 0, 0,1580, 0, 0, 0, 0, 970, 0, 0, 0,1700, 0, 0, 0, 0, 0,1090, 0, 0,1700, 0, 0, 0, 0, 970,1320, 0, 0,1770, 0, 0, 0, 0, 0, 0,1300, 0,1770, 0, 0, 0, 0, 970, 0,1430, 0,1770, 0, 0, 0, 0, 0,1090,1460, 0,1800, 0, 0, 0, 0, 990,1340,1540, 0,1830, 0, 0, 0, 0, 0, 0, 0,1440,1830, 0, 0, 0, 0, 970, 0, 0,1560,1830, 0, 0, 0, 0, 0,1090, 0,1590,1830, 0, 0, 0, 0, 990,1340, 0,1650,1840, 0, 0, 0, 0, 0, 0,1300,1680,1840, 0, 0, 0, 0, 990, 0,1440,1680,1840, 0, 0, 0, 0, 0,1120,1480,1680,1840, 0, 0, 0, 0, 990,1340,1540,1720,1860, 0, 0, 0, 0, 0, 0, 0, 0, 0,1720, 0, 0, 0, 970, 0, 0, 0, 0,1860, 0, 0, 0, 0,1090, 0, 0, 0,1860, 0, 0, 0, 990,1340, 0, 0, 0,1900, 0, 0, 0, 0, 0,1300, 0, 0,1900, 0, 0, 0, 990, 0,1430, 0, 0,1900, 0, 0, 0, 0,1090,1460, 0, 0,1920, 0, 0, 0, 990,1340,1540, 0, 0,1920, 0, 0, 0, 0, 0, 0,1440, 0,1920, 0, 0, 0, 990, 0, 0,1600, 0,1940, 0, 0, 0, 0,1120, 0,1600, 0,1940, 0, 0, 0, 990,1320, 0,1660, 0,1940, 0, 0, 0, 0, 0,1260,1660, 0,1960, 0, 0, 0, 990, 0,1460,1700, 0,1960, 0, 0, 0, 0,1120,1480,1700, 0,1980, 0, 0, 0, 990,1340,1540,1720, 0,1980, 0, 0, 0, 0, 0, 0, 0,1570,1980, 0, 0, 0, 990, 0, 0, 0,1710,2010, 0, 0, 0, 0,1120, 0, 0,1730,2010, 0, 0, 0, 990,1340, 0, 0,1800,2010, 0, 0, 0, 0, 0,1260, 0,1780,2010, 0, 0, 0, 990, 0,1460, 0,1820,2010, 0, 0, 0, 0,1120,1500, 0,1830,2010, 0, 0, 0, 990,1340,1540, 0,1850,2020, 0, 0, 0, 0, 0, 0,1480,1880,2020, 0, 0, 0, 990, 0, 0,1600,1880,2020, 0, 0, 0, 0,1120, 0,1620,1880,2020, 0, 0, 0, 990,1340, 0,1670,1880,2020, 0, 0, 0, 0, 0,1280,1670,1880,2020, 0, 0, 0, 990, 0,1440,1710,5976,1820, 0, 0, 0, 0,1120,1500,1740,5976,1820, 0, 0, 0, 990,1340,1540,1740,5976,1820, 0, 0, 0, 0, 0, 0, 0, 0, 0,1820, 0, 0, 970, 0, 0, 0, 0, 0,1960, 0, 0, 0,1120, 0, 0, 0, 0,1980, 0, 0, 990,1320, 0, 0, 0, 0,2020, 0, 0, 0, 0,1260, 0, 0, 0,2020, 0, 0, 990, 0,1440, 0, 0, 0,2060, 0, 0, 0,1120,1500, 0, 0, 0,2060, 0, 0, 990,1340,1540, 0, 0, 0,2060, 0, 0, 0, 0, 0,1480, 0, 0,2060, 0, 0, 990, 0, 0,1580, 0, 0,2080, 0, 0, 0,1120, 0,1620, 0, 0,2080, 0, 0, 990,1320, 0,1680, 0, 0,2080, 0, 0, 0, 0,1260,1680, 0, 0,2080, 0, 0, 990, 0,1480,1700, 0, 0,2100, 0, 0, 0,1120,1500,1700, 0, 0,2100, 0, 0, 990,1340,1540,1720, 0, 0,2100, 0, 0, 0, 0, 0, 0,1700, 1,1940, 0, 0, 990, 0, 0, 0,1740, 1,1940, 0, 0, 0,1120, 0, 0,1760, 1,1940, 0, 0, 990,1320, 0, 0,1780, 1,1940, 0, 0, 0, 0,1320, 0,1800, 1,1940, 0, 0, 990, 0,1480, 0,1830, 1,1940, 0, 0, 0,1120,1500, 0,1840, 1,1940, 0, 0, 990,1340,1540, 0,1860, 1,1940, 0, 0, 0, 0, 0,1440,1860, 1,1940, 0, 0, 990, 0, 0,1580,1860, 1,1940, 0, 0, 0,1120, 0,1600,1860, 1,1940, 0, 0, 990,1320, 0,1660,1860, 1,1940, 0, 0, 0, 0,1240,1660,1860, 1,1940, 0, 0, 990, 1,1320,1660,1860, 1,1940, 0, 0, 0,1120,1500,1660,1860, 1,1940, 0, 0, 990,1340,1540,1660,1860, 1,1940, 0, 0, 0, 0, 0, 0, 0,5776,1940, 0, 0, 990, 0, 0, 0, 0,5956,1940, 0, 0, 0,1120, 0, 0, 0,5956,1940, 0, 0, 990,1320, 0, 0, 0,5996,1940, 0, 0, 0, 0,1240, 0, 0,5996,1940, 0, 0, 990, 0,1440, 0, 0,5996,1940, 0, 0, 0,1120,1500, 0, 0,5996,1940, 0, 0, 990,1340,1540, 0, 0,5996,1940, 0, 0, 0, 0, 0,1440, 0,5996,1940, 0, 0, 990, 0, 0,1600, 0,5996,1940, 0, 0, 0,1120, 0,1630, 0,5996,1940, 0, 0, 990,1320, 0,1650, 0,5996,1940, 0, 0, 0, 0,1240,1660, 0,5996,1940, 0, 0, 990, 0,1460,1660, 0,5996,1940, 0, 0, 0,1120,1500,1680, 0,5996,1940, 0, 0, 990,1340,1540,1680, 0,5996,1940, 0, 0, 0, 0, 0, 0,5656,5876,1940, 0, 0, 990, 0, 0, 0,5676,5876,1940, 0, 0, 0,1120, 0, 0,5676,5876,1940, 0, 0, 990,1320, 0, 1,1580,6036,1940, 0, 0, 0, 0,1240, 1,1580,6036,1940, 0, 0, 990, 0,1460, 1,1580,6036,1940, 0, 0, 0,1120,1500, 1,1580,6036,1940, 0, 0, 990,1340,1540, 1,1600,6036,1940, 0, 0, 0, 0, 0,1420,1800,6056,1940, 0, 0, 990, 0, 1,1400,1700,6065,1940, 0, 0, 0,1120, 1,1460,1700,6065,1940, 0, 0, 990,1320, 1,1500,1700,6065,1940, 0, 0, 0, 0,1320,1660,1860,6091,1940, 0, 0, 990, 0,1400,1680,1860,6091,1940, 0, 0, 0,1120,1480,1680,1880,6091,1940, 0, 0, 990,1340,1540,1680,1880,6091,1940, 0, 0, 0, 0, 0, 0, 0, 0, 0,2000, 0, 990, 0, 0, 0, 0, 0, 0,2000, 0, 0,1120, 0, 0, 0, 0, 0,2000, 0, 990,1320, 0, 0, 0, 0, 0,2000, 0, 0, 0,1240, 0, 0, 0, 0,2000, 0, 990, 0,1440, 0, 0, 0, 0,2180, 0, 0,1120,1500, 0, 0, 0, 0,2180, 0, 990,1340,1540, 0, 0, 0, 0,2180, 0, 0, 0, 0,1400, 0, 0, 0,2180, 0, 990, 0, 0,1560, 0, 0, 0,2180, 0, 0,1120, 0,1600, 0, 0, 0,2180, 0, 990,1320, 0,1660, 0, 0, 0,2180, 0, 0, 0,1240,1680, 0, 0, 0,2180, 0, 990, 0,1440,1680, 0, 0, 0,2200, 0, 0,1120,1500,1680, 0, 0, 0,2200, 0, 990,1340,1540,1700, 0, 0, 0,2200, 0, 0, 0, 0, 0,1600, 0, 0,2200, 0, 990, 0, 0, 0,1720, 0, 0,2200, 0, 0,1120, 0, 0,1720, 0, 0,2200, 0, 990,1320, 0, 0,1740, 0, 0,2200, 0, 0, 0,1240, 0,1760, 0, 0,2200, 0, 990, 0,1480, 0,1780, 0, 0,2200, 0, 0,1120,1500, 0,1780, 0, 1,2040, 0, 990,1340,1540, 0,1820, 0, 1,2040, 0, 0, 0, 0,1420,1840, 0, 1,2040, 0, 990, 0, 0,1560,1860, 0, 1,2040, 0, 0,1120, 0,1600,1880, 0, 1,2040, 0, 990,1320, 0,1620,1900, 0, 1,2040, 0, 0, 0,1240,1660,1900, 0, 1,2040, 0, 990, 0,1440,1680,1900, 0, 1,2040, 0, 0,1120,1500,1700,1900, 0, 1,2040, 0, 990,1340,1540,1720,1900, 0, 1,2040, 0, 0, 0, 0, 0, 0,1720, 1,2040, 0, 990, 0, 0, 0, 0,1880, 1,2040, 0, 0,1120, 0, 0, 0,1880, 1,2040, 0, 990,1320, 0, 0, 0,1900, 1,2040, 0, 0, 0,1240, 0, 0,1900, 1,2040, 0, 990, 0,1480, 0, 0,1900, 1,2040, 0, 0,1120,1500, 0, 0,1900, 1,2040, 0, 990,1340,1540, 0, 0,1900, 1,2040, 0, 0, 0, 0,1400, 0,1980, 1,2040, 0, 990, 0, 0,1600, 0,1980, 1,2040, 0, 0,1120, 0,1600, 0,1980, 1,2040, 0, 990,1320, 0,1660, 0,1980, 1,2040, 0, 0, 0,1260,1660, 0,1980, 1,2040, 0, 990, 0,1440,1700, 0,1980, 1,2040, 0, 0,1120,1500,1700, 0,1980, 1,2040, 0, 990,1340,1540,1720, 0,1980, 1,2040, 0, 0, 0, 0, 0,1600,2040, 1,2040, 0, 990, 0, 0, 0,1740,2040, 1,2080, 0, 0,1120, 0, 0,1800,2040, 1,2080, 0, 990,1320, 0, 0,1800,2040, 1,2080, 0, 0, 0,1260, 0,1800,2040, 1,2080, 0, 990, 0,1440, 0,1880,2040, 1,2080, 0, 0,1120,1500, 0,1880,2040, 1,2080, 0, 990,1340,1540, 0,1880,2040, 1,2080, 0, 0, 0, 0,1440,1880,2040, 1,2080, 0, 990, 0, 0,1620,1880,2040, 1,2080, 0, 0,1120, 0,1640,1880,2040, 1,2080, 0, 990,1320, 0,1660,1880,2040, 1,2080, 0, 0, 0,1260,1680,1880,2040, 1,2080, 0, 990, 0,1460,1680,1880,2040, 1,2080, 0, 0,1120,1500,1680,1880,2040, 1,2080, 0, 990,1340,1540,1680,1880,2040, 1,2080, 0, 0, 0, 0, 0, 0, 0,5900,2080, 0, 990, 0, 0, 0, 0, 0,6040,2080, 0, 0,1120, 0, 0, 0, 0,6040,2080, 0, 990,1320, 0, 0, 0, 0,6040,2080, 0, 0, 0,1260, 0, 0, 0,6040,2080, 0, 990, 0,1440, 0, 0, 0,6040,2080, 0, 0,1120,1500, 0, 0, 0,6040,2080, 0, 990,1340,1540, 0, 0, 0,6040,2080, 0, 0, 0, 0,1440, 0, 0,6040,2080, 0, 990, 0, 0,1580, 0, 1,5960,2120, 0, 0,1120, 0,1600, 0, 1,5960,2120, 0, 990,1320, 0,1640, 0, 1,5960,2120, 0, 0, 0,1260,1660, 0, 1,5960,2120, 0, 990, 0,1440,1660, 0, 1,6020,2120, 0, 0,1120,1500,1700, 0, 1,6020,2120, 0, 990,1340,1540,1720, 0, 1,6020,2120, 0, 0, 0, 0, 0,1600, 1,6020,2120, 0, 990, 0, 0, 0,1740, 1,6020,2120, 0, 0,1120, 0, 0,1760, 1,6020,2120, 0, 990,1320, 0, 0,1800, 1,6020,2120, 0, 0, 0,1260, 0,1800, 1,6020,2120, 0, 990, 0,1440, 0,1800, 1,6020,2120, 0, 0,1120,1500, 0,1800, 1,6020,2120, 0, 990,1340,1540, 0,1800, 1,6020,2120, 0, 0, 0, 0,1400,1820, 1,6020,2120, 0, 990, 0, 0,1560,1860, 1,6020,2120, 0, 0,1120, 0,1580,1860, 1,6020,2120, 0, 990,1320, 0,1620,1860, 1,6020,2120, 0, 0, 0,1260,1660,1860, 1,6020,2120, 0, 990, 0,1440,5800,1860, 1,6020,2120, 0, 0,1120,1500,5800,1860, 1,6020,2120, 0, 990,1340,1540,5820,1860, 1,6020,2120, 0, 0, 0, 0, 0, 0,5790,6020,2120, 0, 990, 0, 0, 0, 0,5860,6020,2120, 0, 0,1120, 0, 0, 0,5880,6020,2120, 0, 990,1320, 0, 0, 0,5900,6020,2120, 0, 0, 0,1260, 0, 0,5920,6020,2120, 0, 990, 0,1440, 0, 0,5940,6020,2120, 0, 0,1120,1500, 0, 0,5960,6020,2120, 0, 990,1340,1540, 0, 0,5980,6020,2120, 0, 0, 0, 0,1380, 1,5840,6020,2120, 0, 990, 0, 0,1540, 1,5840,6020,2120, 0, 0,1120, 0,1560, 1,5840,6020,2120, 0, 990,1320, 0,1580, 1,5840,6020,2120, 0, 0, 0,1260,1660, 1,5840,6020,2120, 0, 990, 0,1420,1660, 1,5840,6020,2120, 0, 0,1120,1500,1700, 1,5840,6020,2120, 0, 990,1340,1540,1720, 1,5840,6020,2120, 0, 0, 0, 0, 0,5600,5840,6020,2120, 0, 990, 0, 0, 1,5680,5900,6060,2120, 0, 0,1120, 0, 1,5680,5900,6060,2120, 0, 990,1320, 0, 1,5680,5900,6060,2120, 0, 0, 0,1260, 1,5680,5900,6060,2120, 0, 990, 0,1440, 1,5680,5900,6060,2120, 0, 0,1120,1500, 1,5680,5900,6060,2120, 0, 990,1340,1540, 1,5680,5900,6060,2120, 0, 0, 0, 0,5520,5760,5900,6060,2120, 0, 990, 0, 0,5640,5780,5900,6100,2120, 0, 0,1120, 0,5680,5780,5900,6100,2120, 0, 990,1320, 0,5680,5780,5900,6100,2120, 0, 0, 0,5430,5680,5780,5900,6100,2120, 0, 990, 1,5460,5680,5780,5900,6100,2120, 0, 0,5216,5460,5680,5780,5900,6100,2120, 0, 990,1360,1640,1860,2020,2180, 1,2100, 0, 0, 0, 0, 0, 0, 0, 0, 0,2100, 990, 0, 0, 0, 0, 0, 0, 0,2100, 0,1120, 0, 0, 0, 0, 0, 0,2220, 990,1320, 0, 0, 0, 0, 0, 0,2260, 0, 0,1260, 0, 0, 0, 0, 0,2260, 990, 0,1440, 0, 0, 0, 0, 0,2300, 0,1120,1500, 0, 0, 0, 0, 0,2300, 990,1340,1540, 0, 0, 0, 0, 0,2300, 0, 0, 0,1420, 0, 0, 0, 0,2300, 990, 0, 0,1580, 0, 0, 0, 0,2300, 0,1120, 0,1600, 0, 0, 0, 0,2300, 990,1320, 0,1660, 0, 0, 0, 1,2200, 0, 0,1260,1660, 0, 0, 0, 1,2200, 990, 0,1440,1680, 0, 0, 0, 1,2200, 0,1120,1500,1700, 0, 0, 0, 1,2200, 990,1340,1540,1720, 0, 0, 0, 1,2200, 0, 0, 0, 0,1480, 0, 0, 1,2200, 990, 0, 0, 0,1740, 0, 0, 1,2200, 0,1120, 0, 0,1760, 0, 0, 1,2200, 990,1320, 0, 0,1780, 0, 0, 1,2200, 0, 0,1260, 0,1800, 0, 0, 1,2200, 990, 0,1440, 0,1820, 0, 0, 1,2200, 0,1120,1500, 0,1840, 0, 0, 1,2200, 990,1340,1540, 0,1860, 0, 0, 1,2200, 0, 0, 0,1440,1860, 0, 0, 1,2200, 990, 0, 0,1620,1880, 0, 0, 1,2200, 0,1120, 0,1620,1880, 0, 0, 1,2200, 990,1320, 0,1660,1880, 0, 0, 1,2200, 0, 0,1260,1680,1880, 0, 0, 1,2200, 990, 0,1460,1700,1880, 0, 0, 1,2200, 0,1120,1500,1720,1880, 0, 0, 1,2200, 990,1340,1540,1740,1880, 0, 0, 1,2200, 0, 0, 0, 0, 0,1740, 0, 1,2200, 990, 0, 0, 0, 0,1860, 0, 1,2200, 0,1120, 0, 0, 0,1860, 0, 1,2200, 990,1320, 0, 0, 0,1880, 0, 1,2200, 0, 0,1260, 0, 0,1880, 0, 1,2200, 990, 0,1440, 0, 0,1960, 0, 1,2200, 0,1120,1500, 0, 0,1960, 0, 1,2200, 990,1340,1540, 0, 0,1960, 0, 1,2200, 0, 0, 0,1440, 0,1960, 0, 1,2200, 990, 0, 0,1580, 0,1980, 0, 1,2200, 0,1120, 0,1600, 0,1980, 0, 1,2200, 990,1320, 0,1660, 0,1980, 0, 1,2200, 0, 0,1260,1660, 0,1980, 0, 1,2200, 990, 0,1440,1680, 0,2020, 0, 1,2200, 0,1120,1500,1700, 0,2020, 0, 1,2200, 990,1340,1540,1720, 0,2020, 0, 1,2200, 0, 0, 0, 0,1580,2040, 0, 1,2200, 990, 0, 0, 0,5820,1860, 0, 1,2200, 0,1120, 0, 0,5860,1860, 0, 1,2200, 990,1320, 0, 0,5880,1860, 0, 1,2200, 0, 0,1260, 0,5900,1860, 0, 1,2200, 990, 0,1440, 0,5920,1860, 0, 1,2200, 0,1120,1500, 0,5920,1860, 0, 1,2200, 990,1340,1540, 0,5920,1860, 0, 1,2200, 0, 0, 0,1400,5940,1860, 0, 1,2200, 990, 0, 0,1600,5940,1860, 0, 1,2200, 0,1120, 0,1620,5940,1860, 0, 1,2200, 990,1320, 0,1640,5940,1860, 0, 1,2200, 0, 0,1260,1660,5960,1860, 0, 1,2200, 990, 0,1420,1680,5960,1860, 0, 1,2200, 0,1120,1500,1700,5960,1860, 0, 1,2200, 990,1340,1540,1720,5960,1860, 0, 1,2200, 0, 0, 0, 0, 0, 0,1880, 1,2200, 990, 0, 0, 0, 0, 0,2020, 1,2200, 0,1120, 0, 0, 0, 0,2020, 1,2200, 990,1320, 0, 0, 0, 0,2060, 1,2200, 0, 0,1260, 0, 0, 0,2060, 1,2200, 990, 0,1440, 0, 0, 0,2080, 1,2200, 0,1120,1500, 0, 0, 0,2080, 1,2200, 990,1340,1540, 0, 0, 0,2080, 1,2200, 0, 0, 0,1440, 0, 0,2080, 1,2200, 990, 0, 0,1580, 0, 0,2080, 1,2200, 0,1120, 0,1620, 0, 0,2080, 1,2200, 990,1320, 0,1640, 0, 0,2080, 1,2200, 0, 0,1260,1660, 0, 0,2080, 1,2200, 990, 0,1440,1680, 0, 0,2120, 1,2200, 0,1120,1500,1700, 0, 0,2120, 1,2200, 990,1340,1540,1720, 0, 0,2120, 1,2200, 0, 0, 0, 0,1600, 0,2120, 1,2200, 990, 0, 0, 0,1800, 0,2160, 1,2200, 0,1120, 0, 0,1820, 0,2160, 1,2200, 990,1320, 0, 0,1860, 0,2160, 1,2200, 0, 0,1260, 0,1860, 0,2160, 1,2200, 990, 0,1460, 0,1860, 0,2160, 1,2200, 0,1120,1500, 0,1860, 0,2160, 1,2200, 990,1340,1540, 0,1860, 0,2160, 1,2200, 0, 0, 0,1420,1860, 0,2160, 1,2200, 990, 0, 0,1580,1860, 1,2000, 1,2200, 0,1120, 0,1600,1860, 1,2000, 1,2200, 990,1320, 0,1660,1860, 1,2000, 1,2200, 0, 0,1260,1660,1860, 1,2000, 1,2200, 990, 0,1460,1700,1900, 1,2000, 1,2200, 0,1120,1500,1760,1900, 1,2000, 1,2200, 990,1340,1540,1780,1900, 1,2000, 1,2200, 0, 0, 0, 0, 0,5840,2000, 1,2200, 990, 0, 0, 0, 1,5870,2000, 1,2200, 0,1120, 0, 0, 1,5870,2000, 1,2200, 990,1320, 0, 0, 1,5870,2000, 1,2220, 0, 0,1260, 0, 1,5870,2000, 1,2220, 990, 0,1480, 0, 1,5880,2000, 1,2220, 0,1120,1500, 0, 1,5880,2000, 1,2220, 990,1340,1540, 0, 1,5900,2000, 1,2220, 0, 0, 0,1440, 1,5900,2000, 1,2220, 990, 0, 0,1600, 1,5900,2000, 1,2220, 0,1120, 0,1600, 1,5900,2000, 1,2220, 990,1340, 0,1660, 1,5920,2000, 1,2220, 0, 0,1260,1660, 1,5920,2000, 1,2220, 990, 0,1480,1700, 1,5920,2000, 1,2220, 0,1120,1500,1720, 1,5920,2000, 1,2220, 990,1340,1540,1740, 1,5920,2000, 1,2220, 0, 0, 0, 0,5680,5920,2000, 1,2220, 990, 0, 0, 1,5700,5920,2000, 1,2220, 0,1120, 0, 1,5700,5920,2000, 1,2220, 990,1320, 0, 1,5700,5920,2000, 1,2220, 0, 0,1260, 1,5700,5920,2000, 1,2220, 990, 0,1480, 1,5700,5920,2000, 1,2220, 0,1120,1500, 1,5700,5920,2000, 1,2220, 990,1340,1540, 1,5740,5920,2000, 1,2220, 0, 0, 0,5500,5740,5920,2000, 1,2220, 990, 0, 1,5560,5780,5920,2000, 1,2220, 0,1120, 1,5560,5780,5920,2000, 1,2220, 990,1320, 1,5580,5780,5920,2000, 1,2220, 0, 0,5360,5580,5780,5920,2000, 1,2220, 990, 1,5420,5620,5780,5960,2020, 1,2240, 0,5126,5460,5620,5780,5960,2020, 1,2240, 990,5420,5460,5640,5820,5980,2020, 1,2240, 0, 0, 0, 0, 0, 0, 0,6080,2260, 990, 0, 0, 0, 0, 0, 1,6100,2240, 0,1120, 0, 0, 0, 0, 1,6100,2240, 990,1320, 0, 0, 0, 0, 1,6120,2240, 0, 0,1260, 0, 0, 0, 1,6120,2240, 990, 0,1440, 0, 0, 0, 1,6120,2240, 0,1120,1500, 0, 0, 0, 1,6120,2240, 990,1340,1540, 0, 0, 0, 1,6120,2240, 0, 0, 0,1440, 0, 0, 1,6120,2240, 990, 0, 0,1620, 0, 0, 1,6120,2240, 0,1120, 0,1620, 0, 0, 1,6120,2240, 990,1320, 0,1660, 0, 0, 1,6120,2240, 0, 0,1260,1660, 0, 0, 1,6120,2240, 990, 0,1440,1680, 0, 0, 1,6120,2240, 0,1120,1500,1700, 0, 0, 1,6120,2240, 990,1340,1540,1740, 0, 0, 1,6120,2240, 0, 0, 0, 0,1600, 0, 1,6120,2240, 990, 0, 0, 0,1740, 0, 1,6120,2240, 0,1120, 0, 0,1760, 0, 1,6120,2240, 990,1320, 0, 0,1800, 0, 1,6120,2240, 0, 0,1260, 0,1800, 0, 1,6120,2240, 990, 0,1460, 0,1840, 0, 1,6120,2240, 0,1120,1500, 0,1860, 0, 1,6120,2240, 990,1340,1540, 0,1880, 0, 1,6140,2240, 0, 0, 0,1440,1880, 0, 1,6140,2240, 990, 0, 0,1600,1880, 0, 1,6140,2240, 0,1120, 0,1620,1880, 0, 1,6140,2240, 990,1320, 0,1660,1880, 0, 1,6140,2240, 0, 0,1260,1660,1880, 0, 1,6140,2240, 990, 0,1460,1700,1900, 0, 1,6140,2240, 0,1120,1500,1700,1900, 0, 1,6140,2240, 990,1340,1540,1710,1900, 0, 1,6140,2240, 0, 0, 0, 0, 0,1720, 1,6140,2240, 990, 0, 0, 0, 0,1920, 1,6140,2240, 0,1120, 0, 0, 0,1920, 1,6140,2240, 990,1340, 0, 0, 0,1940, 1,6140,2240, 0, 0,1260, 0, 0,1940, 1,6140,2240, 990, 0,1440, 0, 0,2000, 1,6140,2240, 0,1120,1500, 0, 0,2000, 1,6140,2240, 990,1340,1540, 0, 0,2020, 1,6140,2240, 0, 0, 0,1440, 0,2020, 1,6140,2240, 990, 0, 0,1600, 0,2020, 1,6140,2240, 0,1120, 0,1620, 0,2020, 1,6140,2240, 990,1320, 0,1660, 0,2020, 1,6140,2240, 0, 0,1260,1660, 0,2020, 1,6140,2240, 990, 0,1440,1700, 0,2020, 1,6140,2240, 0,1120,1500,1700, 0,2020, 1,6140,2240, 990,1340,1540,1740, 0,2020, 1,6140,2240, 0, 0, 0, 0,1560,2020, 1,6140,2240, 990, 0, 0, 0,1700,2020, 1,6140,2240, 0,1120, 0, 0,1720,2020, 1,6140,2240, 990,1340, 0, 0,1780,2020, 1,6140,2240, 0, 0,1260, 0,1780,2020, 1,6140,2240, 990, 0,1440, 0,1820,2020, 1,6140,2240, 0,1120,1500, 0,1820,2020, 1,6140,2240, 990,1340,1540, 1,1660,2020, 1,6140,2240, 0, 0, 0,5540,5786,1800, 1,6140,2240, 990, 0, 1,5560,5776,1820, 1,6200,2240, 0,1120, 1,5560,5776,1820, 1,6200,2240, 990,1320, 1,5560,5776,1840, 1,6200,2240, 0, 0,5356,5570,5776,1840, 1,6200,2240, 990, 1,5396,5600,5786,1840, 1,6200,2240, 0,5200,5435,5600,5786,1840, 1,6200,2240, 990,5390,5435,5600,5786,1840, 1,6200,2240, 0, 0, 0, 0, 0, 0,10076,10286,2180, 990, 0, 0, 0, 0, 1,5971,6220,2240, 0,1120, 0, 0, 0, 1,5971,6220,2240, 990,1320, 0, 0, 0, 1,5971,6220,2240, 0, 0,1260, 0, 0, 1,5971,6220,2240, 990, 0,1440, 0, 0, 1,5989,6220,2240, 0,1120,1500, 0, 0, 1,5989,6220,2240, 990,1340,1540, 0, 0, 1,5999,6220,2240, 0, 0, 0,1440, 0, 1,5999,6220,2240, 990, 0, 0,1580, 0, 1,5999,6220,2240, 0,1120, 0,1600, 0, 1,5999,6220,2240, 990,1320, 0,1660, 0, 1,6011,6220,2240, 0, 0,1260,1660, 0, 1,6011,6220,2240, 990, 0,1440,1680, 0, 1,6011,6220,2240, 0,1120,1500,1700, 0, 1,6011,6220,2240, 990,1340,1540,1740, 0, 1,6019,6220,2240, 0, 0, 0, 0,1600, 1,6019,6220,2240, 990, 0, 0, 0,1780, 1,6019,6220,2240, 0,1120, 0, 0,1780, 1,6019,6220,2240, 990,1320, 0, 0,1820, 1,6019,6220,2240, 0, 0,1260, 0,1820, 1,6019,6220,2240, 990, 0,1440, 0,1820, 1,6019,6220,2240, 0,1120,1500, 0,1820, 1,6019,6220,2240, 990,1340,1540, 0,1860, 1,6019,6220,2240, 0, 0, 0,1400,1860, 1,6019,6220,2240, 990, 0, 0,1600,1860, 1,6019,6220,2240, 0,1120, 0,1600,1860, 1,6019,6220,2240, 990,1340, 0,1640,1860, 1,6029,6220,2240, 0, 0,1260,1660,1860, 1,6029,6220,2240, 990, 0,1440,1700,1860, 1,6029,6220,2240, 0,1120,1480,1700,1860, 1,6029,6220,2240, 990,1350,1570,1720,1920, 1,6029,6220,2240, 0, 0, 0, 0, 0,9920,6029,6220,2240, 990, 0, 0, 0, 1,5810,6029,6220,2240, 0,1120, 0, 0, 1,5810,6029,6220,2240, 990,1340, 0, 0, 1,5820,6029,6220,2240, 0, 0,1260, 0, 1,5820,6029,6220,2240, 990, 0,1440, 0, 1,5820,6029,6220,2240, 0,1120,1500, 0, 1,5820,6029,6220,2240, 990,1340,1540, 0, 1,5840,6029,6220,2240, 0, 0, 0,1440, 1,5820,6029,6220,2240, 990, 0, 0,1600, 1,5820,6029,6220,2240, 0,1120, 0,1600, 1,5820,6029,6220,2240, 990,1320, 0,1660, 1,5820,6029,6220,2240, 0, 0,1260,1660, 1,5820,6029,6220,2240, 990, 0,1440,1680, 1,5820,6029,6220,2240, 0,1120,1500,1700, 1,5820,6029,6220,2240, 990,1340,1540,1720, 1,5820,6029,6220,2240, 0, 0, 0, 0,5580,5820,6029,6220,2240, 990, 0, 0, 1,5620,5820,6029,6220,2240, 0,1120, 0, 1,5620,5820,6029,6220,2240, 990,1320, 0, 1,5640,5820,6029,6220,2240, 0, 0,1260, 1,5640,5820,6029,6220,2240, 990, 0,1440, 1,5640,5820,6029,6220,2240, 0,1120,1500, 1,5640,5820,6029,6220,2240, 990,1340,1540, 1,5660,5820,6029,6220,2240, 0, 0, 0,5400,5660,5820,6029,6220,2240, 990, 0, 1,5460,5660,5820,6029,6220,2240, 0,1120, 1,5460,5660,5820,6029,6220,2240, 990,1340, 1,5460,5660,5820,6029,6220,2240, 0, 0, 0,5460,5660,5820,6029,6220,2240, 990, 0, 1,5460,5660,5820,6029,6220,2240, 0,1120, 1,5460,5660,5820,6029,6220,2240, 1020,1400,1660,1860,2060,2240,2350, 1,2250 }; unsigned short normal_128k_9dot_dac[]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 960, 0, 0, 0, 0, 0, 0, 0, 0, 0,1100, 0, 0, 0, 0, 0, 0, 0, 980,1280, 0, 0, 0, 0, 0, 0, 0, 0, 0,1250, 0, 0, 0, 0, 0, 0, 980, 0,1390, 0, 0, 0, 0, 0, 0, 0,1130,1440, 0, 0, 0, 0, 0, 0, 980,1320,1480, 0, 0, 0, 0, 0, 0, 0, 0, 0,1400, 0, 0, 0, 0, 0, 980, 0, 0,1510, 0, 0, 0, 0, 0, 0,1130, 0,1530, 0, 0, 0, 0, 0, 980,1320, 0,1580, 0, 0, 0, 0, 0, 0, 0,1260,1580, 0, 0, 0, 0, 0, 980, 1,1300,1580, 0, 0, 0, 0, 0, 0,5246,5446,1460, 0, 0, 0, 0, 0, 5076,5296,5446,1460, 0, 0, 0, 0, 0, 0, 0, 0, 0,1520, 0, 0, 0, 0, 980, 0, 0, 0,1620, 0, 0, 0, 0, 0,1130, 0, 0,1640, 0, 0, 0, 0, 980,1320, 0, 0,1690, 0, 0, 0, 0, 0, 0,1280, 0,1680, 0, 0, 0, 0, 1000, 0,1430, 1,1570, 0, 0, 0, 0, 0,1090,1460, 1,1570, 0, 0, 0, 0, 990,1340,1540, 1,1580, 0, 0, 0, 0, 0, 0, 0,5496,1600, 0, 0, 0, 0, 970, 0, 1,5546,1600, 0, 0, 0, 0, 0,1140, 1,5546,1600, 0, 0, 0, 0, 1000,1320, 1,5546,1600, 0, 0, 0, 0, 0, 0,5346,5566,1600, 0, 0, 0, 0, 1000, 1,5416,5586,1600, 0, 0, 0, 0, 0,5226,5446,5586,1600, 0, 0, 0, 0, 5076,5286,5446,5586,1600, 0, 0, 0, 0, 0, 0, 0, 0, 0,1640, 0, 0, 0, 980, 0, 0, 0, 0,1760, 0, 0, 0, 0,1130, 0, 0, 0,1780, 0, 0, 0, 980,1320, 0, 0, 1,1680, 0, 0, 0, 0, 0,1280, 0, 0,1800, 0, 0, 0, 980, 0,1420, 0, 1,1680, 0, 0, 0, 0,1130,1460, 0, 1,1680, 0, 0, 0, 1000,1320,1480, 0, 1,1680, 0, 0, 0, 0, 0, 0,1380, 1,1680, 0, 0, 0, 980, 0, 0,1540, 1,1700, 0, 0, 0, 0,1130, 0,1580, 1,1700, 0, 0, 0, 1000,1320, 0,1620, 1,1700, 0, 0, 0, 0, 0,5346,1480, 1,1700, 0, 0, 0, 980, 1,5386,1480, 1,1700, 0, 0, 0, 0,5246,5446,1480, 1,1700, 0, 0, 0, 5076,5296,5446,1480, 1,1700, 0, 0, 0, 0, 0, 0, 0,5616,1740, 0, 0, 0, 980, 0, 0, 1,5636,1740, 0, 0, 0, 0,1130, 0, 1,5646,1740, 0, 0, 0, 1000,1320, 0, 1,5656,1740, 0, 0, 0, 0, 0,1280, 1,5666,1740, 0, 0, 0, 980, 0,1420, 1,5676,1740, 0, 0, 0, 0,1130,1460, 1,5676,1740, 0, 0, 0, 1000,1320,1480, 1,5676,1740, 0, 0, 0, 0, 0, 0,5498,5726,1740, 0, 0, 0, 980, 0, 1,5526,5706,1740, 0, 0, 0, 0,1130, 1,5526,5706,1740, 0, 0, 0, 1000,1320, 1,5526,5706,1740, 0, 0, 0, 0, 0,5356,5576,5706,1740, 0, 0, 0, 980, 1,5406,5576,5726,1740, 0, 0, 0, 0,5216,5416,5576,5726,1740, 0, 0, 0, 5076,5296,5446,5576,5726,1740, 0, 0, 0, 0, 0, 0, 0, 0, 0,1760, 0, 0, 980, 0, 0, 0, 0, 1,1780, 0, 0, 0,1130, 0, 0, 0, 1,1790, 0, 0, 1000,1320, 0, 0, 0, 1,1800, 0, 0, 0, 0,1280, 0, 0, 1,1800, 0, 0, 980, 0,1420, 0, 0, 1,1820, 0, 0, 0,1130,1460, 0, 0, 1,1820, 0, 0, 1000,1320,1480, 0, 0, 1,1820, 0, 0, 0, 0, 0,1400, 0, 1,1820, 0, 0, 980, 0, 0,1540, 0, 1,1820, 0, 0, 0,1130, 0,1560, 0, 1,1820, 0, 0, 1000,1320, 0,1610, 0, 1,1830, 0, 0, 0, 0,1280,1620, 0, 1,1830, 0, 0, 980, 1,5386,1480, 0, 1,1840, 0, 0, 0,5246,5446,1480, 0, 1,1840, 0, 0, 5076,5296,5446,1480, 0, 1,1840, 0, 0, 0, 0, 0, 0,1540, 1,1860, 0, 0, 980, 0, 0, 0,1690, 1,1840, 0, 0, 0,1130, 0, 0,1700, 1,1840, 0, 0, 1000,1320, 0, 0,1730, 1,1840, 0, 0, 0, 0,1280, 0,1730, 1,1850, 0, 0, 980, 0,1420, 1,1580, 1,1850, 0, 0, 0,1130,1460, 1,1580, 1,1850, 0, 0, 1000,1320,1480, 1,1580, 1,1850, 0, 0, 0, 0, 0,5486,1600, 1,1850, 0, 0, 980, 0, 1,5516,1610, 1,1850, 0, 0, 0,1130, 1,5526,1610, 1,1850, 0, 0, 1000,1320, 1,5546,1610, 1,1850, 0, 0, 0, 0,5326,5586,1610, 1,1850, 0, 0, 980, 1,5396,5596,1630, 1,1850, 0, 0, 0,5246,5446,5596,1630, 1,1850, 0, 0, 5076,5296,5446,5596,1630, 1,1850, 0, 0, 0, 0, 0, 0, 0,5776,1880, 0, 0, 980, 0, 0, 0, 1,5796,1880, 0, 0, 0,1130, 0, 0, 1,5796,1880, 0, 0, 1000,1320, 0, 0, 1,5796,1880, 0, 0, 0, 0,1280, 0, 1,5796,1880, 0, 0, 980, 0,1430, 0, 1,5796,1880, 0, 0, 0,1130,1470, 0, 1,5796,1880, 0, 0, 1000,1320,1490, 0, 1,5796,1880, 0, 0, 0, 0, 0,1400, 1,5796,1880, 0, 0, 980, 0, 0,1600, 1,5796,1880, 0, 0, 0,1130, 0,1620, 1,5806,1880, 0, 0, 1000,1320, 0,1640, 1,5816,1880, 0, 0, 0, 0,1290,1660, 1,5816,1880, 0, 0, 980, 1,5396,1500, 1,5826,1890, 0, 0, 0,5246,5446,1500, 1,5826,1890, 0, 0, 5076,5296,5446,1500, 1,5826,1890, 0, 0, 0, 0, 0, 0,5616,5846,1890, 0, 0, 980, 0, 0, 1,5646,5866,1900, 0, 0, 0,1130, 0, 1,5656,5866,1900, 0, 0, 1000,1320, 0, 1,5666,5866,1900, 0, 0, 0, 0,1280, 1,5666,5866,1900, 0, 0, 980, 0,1430, 1,5686,5876,1900, 0, 0, 0,1120,1470, 1,5696,5876,1900, 0, 0, 1000,1320,1490, 1,5706,5876,1900, 0, 0, 0, 0, 0,5466,5706,5876,1900, 0, 0, 980, 0, 1,5536,5746,5896,1900, 0, 0, 0,1130, 1,5546,5746,5896,1900, 0, 0, 1000,1320, 1,5566,5746,5896,1900, 0, 0, 0, 0,5366,5596,5746,5896,1900, 0, 0, 980, 1,5396,5596,5746,5896,1900, 0, 0, 0,5206,5446,5596,5746,5896,1900, 0, 0, 5076,5296,5446,5596,5746,5896,1900, 0, 0, 0, 0, 0, 0, 0, 0, 0,1920, 0, 980, 0, 0, 0, 0, 0, 1,1920, 0, 0,1130, 0, 0, 0, 0, 1,1930, 0, 1000,1320, 0, 0, 0, 0, 1,1940, 0, 0, 0,1280, 0, 0, 0, 1,1940, 0, 980, 0,1410, 0, 0, 0, 1,1940, 0, 0,1130,1460, 0, 0, 0, 1,1940, 0, 1000,1320,1490, 0, 0, 0, 1,1940, 0, 0, 0, 0,1390, 0, 0, 1,1940, 0, 980, 0, 0,1540, 0, 0, 1,1950, 0, 0,1130, 0,1560, 0, 0, 1,1950, 0, 1000,1320, 0,1600, 0, 0, 1,1950, 0, 0, 0,1280,1620, 0, 0, 1,1960, 0, 980, 1,5386,1480, 0, 0, 1,1960, 0, 0,5246,5446,1480, 0, 0, 1,1960, 0, 5076,5296,5446,1480, 0, 0, 1,1960, 0, 0, 0, 0, 0,1540, 0, 1,1960, 0, 980, 0, 0, 1,1540, 0, 1,1960, 0, 0,1130, 0, 1,1550, 0, 1,1960, 0, 1000,1320, 0, 1,1560, 0, 1,1960, 0, 0, 0,1280, 1,1580, 0, 1,1960, 0, 980, 0,1420, 1,1590, 0, 1,1960, 0, 0,1130,1460, 1,1600, 0, 1,1960, 0, 1000,1320,1490, 1,1620, 0, 1,1960, 0, 0, 0, 0,5496,1640, 0, 1,1960, 0, 980, 0, 1,5516,1620, 0, 1,1960, 0, 0,1130, 1,5526,1620, 0, 1,1960, 0, 1000,1320, 1,5526,1620, 0, 1,1960, 0, 0, 0,5246,5536,1620, 0, 1,1960, 0, 980, 1,5386,5596,1620, 0, 1,1970, 0, 0,5206,5446,5596,1620, 0, 1,1970, 0, 5076,5296,5446,5596,1620, 0, 1,1970, 0, 0, 0, 0, 0, 0,1660, 1,1970, 0, 980, 0, 0, 0, 1,1700, 1,1980, 0, 0,1130, 0, 0, 1,1700, 1,1980, 0, 1000,1320, 0, 0, 1,1700, 1,1980, 0, 0, 0,1280, 0, 1,1710, 1,1980, 0, 980, 0,1430, 0, 1,1720, 1,1980, 0, 0,1130,1470, 0, 1,1720, 1,1980, 0, 1000,1320,1490, 0, 1,1720, 1,1980, 0, 0, 0, 0,1420, 1,1720, 1,1980, 0, 980, 0, 1,1430, 1,1720, 1,1980, 0, 0,1130, 1,1460, 1,1720, 1,1980, 0, 1000,1320, 1,1480, 1,1720, 1,1980, 0, 0, 0,5356,1480, 1,1720, 1,1980, 0, 990, 1,5386,1480, 1,1730, 1,1990, 0, 0,5246,5446,1480, 1,1730, 1,1990, 0, 5076,5296,5446,1480, 1,1730, 1,1990, 0, 0, 0, 0, 0,5616,1750, 1,1990, 0, 980, 0, 0, 1,5636,1760, 1,1990, 0, 0,1130, 0, 1,5646,1760, 1,1990, 0, 1000,1320, 0, 1,5666,1760, 1,1990, 0, 0, 0,1280, 1,5666,1760, 1,1990, 0, 980, 0,1430, 1,5666,1760, 1,1990, 0, 0,1130,1470, 1,5666,1760, 1,1990, 0, 1000,1320,1490, 1,5696,1780, 1,1990, 0, 0, 0, 0,5496,5706,1770, 1,1990, 0, 980, 0, 1,5516,5706,1780, 1,2020, 0, 0,1130, 1,5526,5716,1780, 1,2020, 0, 1000,1320, 1,5546,5726,1780, 1,2020, 0, 0, 0,5356,5546,5726,1780, 1,2020, 0, 980, 1,5396,5596,5746,1780, 1,2020, 0, 0,5206,5446,5596,5746,1780, 1,2020, 0, 5076,5296,5446,5596,5746,1780, 1,2020, 0, 0, 0, 0, 0, 0, 0,5896,2020, 0, 980, 0, 0, 0, 0, 1,5886,2020, 0, 0,1120, 0, 0, 0, 1,5896,2020, 0, 1000,1320, 0, 0, 0, 1,5896,2020, 0, 0, 0,1280, 0, 0, 1,5896,2020, 0, 980, 0,1430, 0, 0, 1,5946,2020, 0, 0,1130,1470, 0, 0, 1,5946,2020, 0, 1000,1320,1490, 0, 0, 1,5956,2020, 0, 0, 0, 0,1400, 0, 1,5946,2020, 0, 980, 0, 1,1430, 0, 1,5956,2030, 0, 0,1140, 1,1450, 0, 1,5956,2030, 0, 1000,1320, 1,1460, 0, 1,5956,2030, 0, 0, 0,5366,1480, 0, 1,5956,2030, 0, 980, 1,5386,1480, 0, 1,5956,2030, 0, 0,5246,5446,1480, 0, 1,5956,2030, 0, 5076,5296,5446,1480, 0, 1,5956,2030, 0, 0, 0, 0, 0,1580, 1,5956,2030, 0, 980, 0, 0, 1,1590, 1,5976,2050, 0, 0,1140, 0, 1,1600, 1,5976,2050, 0, 1000,1320, 0, 1,1600, 1,5976,2050, 0, 0, 0,1300, 1,1600, 1,5976,2050, 0, 980, 0,1440, 1,1610, 1,5976,2050, 0, 0,1140,1480, 1,1620, 1,5976,2050, 0, 1000,1330,1500, 1,1620, 1,5976,2050, 0, 0, 0, 0,5496,1620, 1,5976,2050, 0, 980, 0, 1,5526,1620, 1,5996,2050, 0, 0,1140, 1,5546,1630, 1,5996,2050, 0, 1000,1330, 1,5546,1630, 1,5996,2050, 0, 0, 0,5346,5586,1630, 1,5996,2050, 0, 980, 1,5386,5596,1630, 1,5996,2050, 0, 0,5246,5446,5596,1630, 1,5996,2050, 0, 5076,5296,5446,5596,1630, 1,5996,2050, 0, 0, 0, 0, 0, 0,5766,6006,2050, 0, 980, 0, 0, 0, 1,5806,6006,2050, 0, 0,1140, 0, 0, 1,5806,6006,2050, 0, 1000,1320, 0, 0, 1,5816,6006,2050, 0, 0, 0,1280, 0, 1,5806,6006,2050, 0, 980, 0,1440, 0, 1,5816,6006,2050, 0, 0,1140,1480, 0, 1,5826,6006,2050, 0, 1000,1320,1490, 0, 1,5826,6006,2050, 0, 0, 0, 0,1430, 1,5826,6006,2050, 0, 980, 0, 1,1450, 1,5826,6006,2050, 0, 0,1140, 1,1460, 1,5836,6006,2050, 0, 1000,1320, 1,1480, 1,5846,6006,2050, 0, 0, 0,5366,1500, 1,5846,6006,2050, 0, 980, 1,5406,1500, 1,5866,6026,2050, 0, 0,5246,5446,1500, 1,5866,6026,2050, 0, 5076,5296,5446,1500, 1,5866,6026,2050, 0, 0, 0, 0, 0,5626,5886,6026,2050, 0, 980, 0, 0, 1,5676,5886,6026,2050, 0, 0,1140, 0, 1,5676,5886,6026,2050, 0, 1000,1320, 0, 1,5696,5886,6026,2050, 0, 0, 0,1290, 1,5696,5886,6026,2050, 0, 980, 0,1440, 1,5696,5896,6026,2050, 0, 0,1140,1480, 1,5696,5896,6026,2050, 0, 1000,1320,1500, 1,5716,5896,6026,2050, 0, 0, 0, 0,5466,5716,5896,6026,2050, 0, 980, 0, 1,5516,5726,5896,6026,2050, 0, 0,1140, 1,5526,5726,5896,6026,2050, 0, 1000,1320, 1,5566,5726,5896,6026,2050, 0, 0, 0,5356,5566,5726,5896,6026,2050, 0, 980, 1,5376,5566,5726,5896,6026,2050, 0, 0,5246,5446,5566,5726,5896,6026,2050, 0, 5076,5296,5446,5566,5726,5896,6026,2050, 0, 0, 0, 0, 0, 0, 0, 0, 0,2040, 980, 0, 0, 0, 0, 0, 0, 1,2050, 0,1130, 0, 0, 0, 0, 0, 1,2060, 1000,1320, 0, 0, 0, 0, 0, 1,2070, 0, 0,1280, 0, 0, 0, 0, 1,2070, 980, 0,1420, 0, 0, 0, 0, 1,2070, 0,1130,1470, 0, 0, 0, 0, 1,2070, 1000,1320,1490, 0, 0, 0, 0, 1,2070, 0, 0, 0,1400, 0, 0, 0, 1,2070, 980, 0, 0,1530, 0, 0, 0, 1,2080, 0,1130, 0,1570, 0, 0, 0, 1,2080, 1000,1320, 0,1610, 0, 0, 0, 1,2090, 0, 0,1280,1630, 0, 0, 0, 1,2080, 980, 1,5386,1480, 0, 0, 0, 1,2090, 0,5246,5446,1480, 0, 0, 0, 1,2090, 5076,5296,5446,1490, 0, 0, 0, 1,2090, 0, 0, 0, 0,1530, 0, 0, 1,2090, 980, 0, 0, 1,1550, 0, 0, 1,2090, 0,1130, 0, 1,1560, 0, 0, 1,2090, 1000,1320, 0, 1,1580, 0, 0, 1,2090, 0, 0,1280, 1,1580, 0, 0, 1,2090, 980, 0,1430, 1,1580, 0, 0, 1,2090, 0,1130,1470, 1,1590, 0, 0, 1,2090, 1000,1320,1490, 1,1600, 0, 0, 1,2090, 0, 0, 0,5496,1620, 0, 0, 1,2090, 980, 0, 1,5536,1620, 0, 0, 1,2100, 0,1130, 1,5546,1620, 0, 0, 1,2100, 1000,1320, 1,5566,1620, 0, 0, 1,2100, 0, 0,5366,5586,1620, 0, 0, 1,2100, 980, 1,5376,5566,1620, 0, 0, 1,2100, 0,5246,5446,5566,1620, 0, 0, 1,2100, 5096,5296,5446,5566,1620, 0, 0, 1,2100, 0, 0, 0, 0, 0,1660, 0, 1,2100, 980, 0, 0, 0, 1,1670, 0, 1,2100, 0,1130, 0, 0, 1,1680, 0, 1,2100, 1000,1320, 0, 0, 1,1700, 0, 1,2100, 0, 0,1280, 0, 1,1700, 0, 1,2100, 980, 0,1430, 0, 1,1710, 0, 1,2110, 0,1130,1470, 0, 1,1720, 0, 1,2110, 1000,1320,1490, 0, 1,1730, 0, 1,2110, 0, 0, 0,1400, 1,1720, 0, 1,2110, 980, 0, 1,1420, 1,1720, 0, 1,2110, 0,1130, 1,1440, 1,1720, 0, 1,2110, 1000,1320, 1,1460, 1,1730, 0, 1,2110, 0, 0,5346,1460, 1,1730, 0, 1,2110, 980, 1,5386,1480, 1,1740, 0, 1,2120, 0,5246,5446,1480, 1,1740, 0, 1,2120, 5076,5296,5446,1500, 1,1740, 0, 1,2120, 0, 0, 0, 0,5616,1740, 0, 1,2120, 980, 0, 0, 1,5626,1750, 0, 1,2120, 0,1130, 0, 1,5636,1750, 0, 1,2120, 1000,1320, 0, 1,5656,1750, 0, 1,2120, 0, 0,1280, 1,5666,1750, 0, 1,2120, 980, 0,1440, 1,5666,1750, 0, 1,2120, 0,1130,1480, 1,5666,1750, 0, 1,2120, 1000,1320,1490, 1,5686,1750, 0, 1,2120, 0, 0, 0,5486,5726,1750, 0, 1,2120, 980, 0, 1,5496,5726,1750, 0, 1,2130, 0,1140, 1,5526,5726,1750, 0, 1,2130, 1000,1320, 1,5546,5726,1760, 0, 1,2130, 0, 0,5356,5576,5726,1760, 0, 1,2130, 980, 1,5376,5566,5726,1760, 0, 1,2130, 0,5246,5446,5566,5726,1760, 0, 1,2130, 5076,5296,5446,5566,5726,1760, 0, 1,2130, 0, 0, 0, 0, 0, 0,1810, 1,2130, 980, 0, 0, 0, 0, 1,1820, 1,2130, 0,1130, 0, 0, 0, 1,1820, 1,2130, 1000,1320, 0, 0, 0, 1,1830, 1,2130, 0, 0,1280, 0, 0, 1,1830, 1,2130, 980, 0,1430, 0, 0, 1,1830, 1,2130, 0,1130,1470, 0, 0, 1,1830, 1,2130, 1000,1320,1490, 0, 0, 1,1830, 1,2130, 0, 0, 0,1400, 0, 1,1830, 1,2130, 980, 0, 1,1420, 0, 1,1850, 1,2130, 0,1130, 1,1440, 0, 1,1850, 1,2130, 1000,1320, 1,1460, 0, 1,1850, 1,2130, 0, 0,5346,1460, 0, 1,1850, 1,2130, 980, 1,5386,1480, 0, 1,1860, 1,2130, 0,5246,5446,1480, 0, 1,1860, 1,2130, 5076,5296,5446,1500, 0, 1,1870, 1,2130, 0, 0, 0, 0,1530, 1,1860, 1,2130, 980, 0, 0, 1,1560, 1,1870, 1,2130, 0,1130, 0, 1,1570, 1,1870, 1,2130, 1000,1320, 0, 1,1580, 1,1870, 1,2130, 0, 0,1280, 1,1580, 1,1870, 1,2130, 980, 0,1430, 1,1600, 1,1880, 1,2140, 0,1130,1470, 1,1610, 1,1880, 1,2140, 1000,1320,1490, 1,1610, 1,1880, 1,2140, 0, 0, 0,5486,1620, 1,1880, 1,2140, 980, 0, 1,5516,1620, 1,1890, 1,2140, 0,1130, 1,5536,1620, 1,1890, 1,2140, 1000,1320, 1,5566,1620, 1,1890, 1,2140, 0, 0,5366,5586,1620, 1,1890, 1,2140, 980, 1,5376,5566,1630, 1,1900, 1,2140, 0,5246,5466,5566,1630, 1,1900, 1,2140, 5076,5296,5446,5566,1630, 1,1900, 1,2140, 0, 0, 0, 0, 0,5376,1900, 1,2140, 980, 0, 0, 0, 1,5776,1900, 1,2150, 0,1130, 0, 0, 1,5796,1900, 1,2150, 1000,1320, 0, 0, 1,5796,1900, 1,2150, 0, 0,1280, 0, 1,5796,1900, 1,2150, 980, 0,1440, 0, 1,5796,1900, 1,2150, 0,1130,1480, 0, 1,5806,1900, 1,2150, 1000,1320,1500, 0, 1,5806,1900, 1,2150, 0, 0, 0,1430, 1,5806,1900, 1,2150, 980, 0, 1,1450, 1,5806,1910, 1,2160, 0,1130, 1,1460, 1,5806,1910, 1,2160, 1000,1320, 1,1470, 1,5816,1910, 1,2160, 0, 0,5346,1480, 1,5816,1910, 1,2160, 980, 1,5386,1480, 1,5816,1910, 1,2160, 0,5246,5446,1480, 1,5816,1910, 1,2160, 5076,5296,5446,1500, 1,5816,1910, 1,2160, 0, 0, 0, 0,5586,5836,1910, 1,2160, 980, 0, 0, 1,5626,5836,1910, 1,2160, 0,1140, 0, 1,5636,5836,1910, 1,2160, 1000,1320, 0, 1,5646,5836,1910, 1,2160, 0, 0,1290, 1,5646,5836,1910, 1,2160, 980, 0,1430, 1,5646,5836,1910, 1,2160, 0,1140,1480, 1,5656,5836,1910, 1,2160, 1000,1320,1500, 1,5686,5836,1910, 1,2160, 0, 0, 0,5446,5686,5836,1910, 1,2160, 980, 0, 1,5516,5716,5856,1920, 1,2160, 0,1140, 1,5536,5716,5856,1920, 1,2160, 1000,1320, 1,5566,5726,5856,1920, 1,2160, 0, 0,5366,5586,5736,5856,1920, 1,2160, 980, 1,5376,5566,5726,5856,1930, 1,2170, 0,5246,5446,5566,5726,5856,1930, 1,2170, 5076,5296,5446,5566,5726,5856,1930, 1,2170, 0, 0, 0, 0, 0, 0, 0,6046,2170, 980, 0, 0, 0, 0, 0, 1,6076,2180, 0,1130, 0, 0, 0, 0, 1,6086,2180, 1000,1320, 0, 0, 0, 0, 1,6086,2180, 0, 0,1280, 0, 0, 0, 1,6086,2180, 980, 0,1420, 0, 0, 0, 1,6086,2180, 0,1130,1470, 0, 0, 0, 1,6086,2180, 1000,1320,1490, 0, 0, 0, 1,6086,2180, 0, 0, 0,1400, 0, 0, 1,6086,2180, 980, 0, 1,1420, 0, 0, 1,6086,2180, 0,1130, 1,1440, 0, 0, 1,6086,2180, 1000,1320, 1,1460, 0, 0, 1,6086,2180, 0, 0,5346,1460, 0, 0, 1,6086,2180, 980, 1,5386,1480, 0, 0, 1,6096,2180, 0,5246,5446,1480, 0, 0, 1,6096,2180, 5076,5296,5446,1500, 0, 0, 1,6096,2180, 0, 0, 0, 0,1540, 0, 1,6096,2180, 980, 0, 0, 1,1570, 0, 1,6106,2180, 0,1130, 0, 1,1580, 0, 1,6106,2180, 1000,1320, 0, 1,1600, 0, 1,6106,2180, 0, 0,1280, 1,1600, 0, 1,6106,2180, 980, 0,1430, 1,1600, 0, 1,6106,2180, 0,1130,1470, 1,1600, 0, 1,6106,2180, 1000,1320,1490, 1,1610, 0, 1,6106,2180, 0, 0, 0,5486,1610, 0, 1,6106,2180, 980, 0, 1,5526,1620, 0, 1,6106,2180, 0,1130, 1,5546,1620, 0, 1,6106,2180, 1000,1320, 1,5546,1630, 0, 1,6106,2180, 0, 0,5346,5586,1630, 0, 1,6106,2180, 980, 1,5376,5566,1630, 0, 1,6116,2180, 0,5246,5446,5566,1630, 0, 1,6116,2180, 5076,5296,5446,5566,1630, 0, 1,6116,2180, 0, 0, 0, 0, 0,1700, 1,6116,2180, 980, 0, 0, 0, 1,1720, 1,6116,2180, 0,1130, 0, 0, 1,1730, 1,6116,2180, 1000,1320, 0, 0, 1,1730, 1,6116,2180, 0, 0,1280, 0, 1,1730, 1,6116,2180, 980, 0,1430, 0, 1,1740, 1,6116,2180, 0,1130,1470, 0, 1,1740, 1,6116,2180, 1000,1320,1490, 0, 1,1740, 1,6116,2180, 0, 0, 0,1430, 1,1740, 1,6116,2180, 980, 0, 1,1430, 1,1740, 1,6116,2180, 0,1130, 1,1450, 1,1740, 1,6116,2180, 1000,1320, 1,1460, 1,1740, 1,6116,2180, 0, 0,5366,1470, 1,1740, 1,6116,2180, 980, 1,5386,1480, 1,1750, 1,6116,2180, 0,5246,5446,1480, 1,1750, 1,6116,2180, 5076,5296,5446,1500, 1,1750, 1,6116,2180, 0, 0, 0, 0,5616,1750, 1,6116,2180, 980, 0, 0, 1,5616,1770, 1,6126,2190, 0,1130, 0, 1,5636,1770, 1,6126,2190, 1000,1320, 0, 1,5646,1770, 1,6126,2190, 0, 0,1280, 1,5646,1770, 1,6126,2190, 980, 0,1430, 1,5646,1770, 1,6126,2190, 0,1130,1480, 1,5666,1770, 1,6126,2190, 1000,1320,1500, 1,5686,1770, 1,6126,2190, 0, 0, 0,5446,5686,1770, 1,6126,2190, 980, 0, 1,5516,5716,1770, 1,6126,2190, 0,1130, 1,5536,5726,1770, 1,6126,2190, 1000,1320, 1,5566,5726,1770, 1,6126,2190, 0, 0,5366,5586,5736,1770, 1,6126,2190, 980, 1,5376,5566,5726,1780, 1,6136,2190, 0,5246,5446,5566,5726,1780, 1,6136,2190, 5076,5296,5446,5566,5726,1780, 1,6136,2190, 0, 0, 0, 0, 0, 0,5886,6136,2190, 980, 0, 0, 0, 0, 1,5906,6156,2190, 0,1130, 0, 0, 0, 1,5916,6156,2190, 1000,1320, 0, 0, 0, 1,5936,6156,2190, 0, 0,1280, 0, 0, 1,5916,6156,2190, 980, 0,1430, 0, 0, 1,5946,6176,2190, 0,1130,1470, 0, 0, 1,5956,6176,2190, 1000,1320,1490, 0, 0, 1,5956,6176,2190, 0, 0, 0,1420, 0, 1,5966,6176,2190, 980, 0, 1,1430, 0, 1,5966,6166,2190, 0,1130, 1,1450, 0, 1,5966,6166,2190, 1000,1320, 1,1460, 0, 1,5966,6166,2190, 0, 0,5366,1470, 0, 1,5966,6166,2190, 980, 1,5376,1480, 0, 1,5966,6166,2190, 0,5246,5446,1480, 0, 1,5966,6166,2190, 5076,5296,5446,1500, 0, 1,5966,6166,2190, 0, 0, 0, 0,1580, 1,5966,6166,2190, 980, 0, 0, 1,1600, 1,5976,6166,2190, 0,1130, 0, 1,1600, 1,5976,6166,2190, 1000,1320, 0, 1,1600, 1,5976,6166,2190, 0, 0,1280, 1,1600, 1,5976,6166,2190, 980, 0,1430, 1,1600, 1,5976,6166,2190, 0,1130,1480, 1,1600, 1,5976,6166,2190, 1000,1320,1490, 1,1610, 1,5976,6166,2190, 0, 0, 0,5446,1620, 1,5976,6166,2190, 980, 0, 1,5526,1620, 1,5986,6166,2190, 0,1130, 1,5546,1620, 1,5986,6166,2190, 1000,1320, 1,5546,1630, 1,5986,6166,2190, 0, 0,5346,5566,1630, 1,5986,6166,2190, 980, 1,5376,5566,1630, 1,5986,6166,2190, 0,5246,5446,5566,1630, 1,5986,6166,2190, 5076,5296,5446,5566,1630, 1,5986,6166,2190, 0, 0, 0, 0, 0,9876,10080,10240,2160, 980, 0, 0, 0, 1,5776,6016,6166,2190, 0,1130, 0, 0, 1,5786,6016,6166,2190, 1000,1320, 0, 0, 1,5796,6016,6166,2190, 0, 0,1280, 0, 1,5786,6016,6166,2190, 980, 0,1440, 0, 1,5796,6016,6166,2190, 0,1130,1480, 0, 1,5796,6016,6166,2190, 1000,1320,1490, 0, 1,5796,6016,6166,2190, 0, 0, 0,1430, 1,5796,6016,6166,2190, 980, 0, 1,1430, 1,5796,6016,6166,2190, 0,1130, 1,1450, 1,5796,6016,6166,2190, 1000,1320, 1,1460, 1,5796,6016,6166,2190, 0, 0,5366,1470, 1,5816,6016,6166,2190, 980, 1,5376,1480, 1,5826,6016,6166,2200, 0,5246,5446,1480, 1,5836,6016,6166,2200, 5076,5296,5446,1500, 1,5836,6016,6166,2200, 0, 0, 0, 0,9736,5836,6016,6166,2200, 980, 0, 0, 1,9736,5846,6016,6166,2200, 0,1130, 0, 1,9736,5846,6016,6166,2200, 1000,1320, 0, 1,9736,5846,6016,6166,2200, 0, 0,1290, 1,9736,5846,6016,6166,2200, 980, 0,1440, 1,9756,5846,6016,6166,2200, 0,1130,1480, 1,9756,5846,6016,6166,2200, 1000,1320,1500, 1,9756,5846,6016,6166,2200, 0, 0, 0,9586, 1,5746,5986,6146,2200, 980, 0, 1,9576,5666,5866,6016,6166,2210, 0,1130, 1,9586,5666,5866,6016,6166,2210, 1000,1320, 1,9596,5666,5866,6016,6166,2210, 0, 0,9486, 1,5626,5846,6016,6166,2210, 980, 1,5386,5566,5726,5866,6016,6166,2210, 0,5246, 1,5436,5666,5856,6006,6166,2210, 5100,5300,5450,5600,5750,5900,6050,6200,2200 }; extern InkJetPrinter *pInkJectPrinter; // 传送打印内容的数据结构 // $D1rccccLLLLddd...ddco struct _DataFromPC { char keyword; // 特征字符 $ char fun; // 功能码,固定为"D", 表示传送打印点阵信息 char devAddr; // 默认01, (01~08) char printRowDotNum; // 信息点阵垂直有效行数5~40点 int printColDotNum; // 信息点阵水平有效列数8~3100列,均为8的整数倍值。 int Length; // (printRowDotNum* (1+printColDotNum/8)) + 1字节(检验码)+1字节(结束字符) char *dotData; // 按行列顺序排列的点阵数据,实际点阵数据总字节数为:printRowDotNum* printColDotNum/8 char crc; // 校验字节 char eoc; // 结束符,固定为小写字母'o' }dataFromPC,r_dataFromPC; struct _TextFromPC { char keyword; // 特征字符 ‘#’ char fun; // 功能码,固定为‘T’, 表示传送打印点阵信息 char devAddr; // 默认 1, (1~8) unsigned char Length; // Head(4) + 字串长度[32] + 1字节(检验码)+1字节(结束字符) char mStr[32]; // 定长,不足补 '\0' char crc; // 校验字节 char eoc; // 结束符,固定为小写字母'o' }TextFromPC,r_TextFromPC; // 38字节 // 传送参数和命令的数据结构 // &C14PPFco struct _ParaFromPC{ unsigned char keyword; // 特征字符 & unsigned char fun; // 功能码,固定为"C",表示传送参数或命令 unsigned char devAddr; // 默认01, (01~08) unsigned char Length; // 参数长度,从参数printCmd到 eoc 的总字节数 unsigned char printCmd; // "P"表示开始打印,"S"表示停止打印,"p"表示暂停打印, "O"表示不操作 unsigned char printMode; // "F" 正向打印,"R" 正向打印, "U" 上下颠倒打印,"T" 上下左右同时颠倒打印 // 还可以添加其它参数 unsigned char crc; // 校验字节 unsigned char eoc; // 结束符,固定为小写字母'o' }paraFromPC,r_paraFromPC; // &R14S?co 查询喷码机状态 // &R14D?co 查询打印内容点阵 // 查询喷码机状态的数据结构 /*所有警告都是高电平警告*/ struct _StatusToPC{ unsigned char keyword; // 特征字符 # unsigned char fun; // 功能码,固定为"S",表示传送喷码机状态数据 unsigned char devAddr; // 默认01, (01~08) unsigned char Length; // 参数长度,从参数printCmd到 eoc 的总字节数 unsigned char printCmd; // 打印操作当前状态, "P"表示正在打印,"S"表示停止打印,"p"表示暂停打印, "C"表示回收槽未开,"W"表示等待状态 unsigned char printMode; // 当前打印方向状态,其中:"F" 正向打印,"R" 正向打印, "U" 上下颠倒打印,"T" 上下左右同时颠倒打印 unsigned char statWarn:8; // {墨线开关,高压报警,回收故障,墨水液位,溶剂液位,墨水渗漏,喷头盖开,粘度故障} unsigned char isPumpValveControledByHand:1; // 手动控制阀泵标志,1手动,0自动 unsigned char mainInkPumpError:1; //主墨泵故障 unsigned char selfCheckDone:1; // 自检完成标志, 1完成,0没有完成 unsigned char reclainTankReachEnd:1; //回收槽打开完成标志 unsigned char beeperOnFlag:1; // 报警标志 有故障 unsigned char lostCommuFlag:1; //失去通信 unsigned char isPrinting:1; // 正在打印标志 unsigned char reclaimTankBlockedAppending:1; //回收槽被卡住 unsigned int selfCheckCnt; // 自检时间计数器,60s倒计时 unsigned int currReclaimTankPos; // 回收槽开位置 //unsigned char InkLineStaus; // 0 关,1-开ing,2--关ing,3-开完成 unsigned int productCnt; // 产品计数器 // 还可以添加一些其它状态 unsigned char crc; // 校验字节 unsigned char eoc; // 结束符,固定为小写字母'o' }statusToPC; // 不足4的倍数时,自动补足到4的倍数。 如statusToPC原本为 22字节,但实际的sizeof(statusToPC) = 24 // 传送当前打印内容点阵到PC的数据结构 struct _DataToPC { unsigned char keyword; // 特征字符 # unsigned char fun; // 功能码,固定为"D", 表示传送打印点阵信息 unsigned char devAddr; // 默认01, (01~08) unsigned char printRowDotNum; // 信息点阵垂直有效行数5~40点 unsigned int printColDotNum; // 信息点阵水平有效列数8~3100列,均为8的整数倍值。 unsigned int Length; // (printRowDotNum* (1+printColDotNum/8)) + 1字节(检验码)+1字节(结束字符) unsigned char *dotData; // 按行列顺序排列的点阵数据,实际点阵数据总字节数为:printRowDotNum* printColDotNum/8 unsigned char crc; // 校验字节 unsigned char eoc; // 结束符,固定为小写字母'o' }dataToPC; typedef struct adjlen_strut { unsigned char uint8varLenHeadEn:8; // 头部使能 unsigned int changeHeadlen:24; // 头部可变长的长度。实际长度 unsigned int headCounter:16; // 变量1起始值+这个数,执行可变长 unsigned int endCounter:16; // 变量1结束值-这个数,执行可变长 unsigned char uint8varLenEndEn:8; // 尾部使能 unsigned int changeEndlen:24; // 尾部可变长的长度。实际长度 }Adjlen_strut; DevOp::DevOp(SysPara * sysPara) { this->sysPara = sysPara; #ifndef Q_OS_WIN32 DAdataout = open("/dev/fpga_driver", O_RDWR); if(DAdataout < 0){ qDebug()<<"fpga_driver false."; fpgaDevOpenFlag = false; } else { qDebug()<<"fpga_driver ok."; fpgaDevOpenFlag = true; } pwm_sp = open("/dev/pwm1",0); if(pwm_sp <0 ){ qDebug()<<"pwm_sp open error,ret:"<20) OscillatorVoltage[i] = 68+i-50; else if(i>11) { OscillatorVoltage[i] = 15+2*(i-10); } else { OscillatorVoltage[i]=11; } } OscillatorVoltage[0]=0; if(!sysPara){ QMessageBox::critical(0,"错误","DevOp构造函数的sysParam不能为空"); //设个陷阱,防止误操作 } } DevOp::~DevOp(){ if(DAdataout >= 0) close(DAdataout); if(pwm_sp >= 0) close(pwm_sp); if(pwm_fd >= 0) close(pwm_fd); if(Interrupt_fd >= 0) close(Interrupt_fd); if(iocontrl >= 0) close(iocontrl); if(adc_fd >= 0) close(adc_fd); for(int i = 0; i < MAX_VARI_NUM; i++){ vars_t *p_var = &sysPara->status.vars[i]; if(p_var->original){ if(p_var->dat) free(p_var->dat); } } } void DevOp::stm32Rd(int addr,unsigned char*dat,int len){ // 没有使用为何要判空?是否过度扩大其引用范围? if(pInkJectPrinter == NULL) return; if(!stopSendDataSTM32) emit sendSerialDataToSTM32(1,addr,dat,len,2); else emit sendSerialDataToSTM32(0,0,dat,0,2); } void DevOp::stm32Wr(int addr,unsigned char*dat,int len){ if(pInkJectPrinter == NULL) return; if(!stopSendDataSTM32) emit sendSerialDataToSTM32(2,addr,dat,len,2); } void DevOp::fpgaRd(int addr,unsigned char*dat,int len){ if(pInkJectPrinter == NULL) return; emit sendSerialDataToFPGA(1,addr,dat,len,1); } unsigned char dataOfPowerOnTimer[2]={}; void DevOp::sendSTM32SetPowerOnTimer(quint16 time) { dataOfPowerOnTimer[0] = time; dataOfPowerOnTimer[1] = time>>8; stm32Wr(0xA2,dataOfPowerOnTimer,2); } typedef struct{ int addr; unsigned char* data; int len; }writeData; QMap map; typedef struct{ int addr; unsigned char data[2]; int len; }writeDataValue; QMap mapValue; void DevOp::fpgaWrD2(int addr,unsigned char*dat,int len){ if(pInkJectPrinter == NULL) return; writeData writedata; writedata.addr = addr; writedata.data = dat; writedata.len = len; map.insert(addr,writedata); emit sendSerialDataToFPGA(0xD2,map.value(addr).addr,map.value(addr).data,map.value(addr).len,1); } void DevOp::fpgaWr(int addr,unsigned char*dat,int len){ if(pInkJectPrinter == NULL) return; writeData writedata; writedata.addr = addr; writedata.data = dat; writedata.len = len; map.insert(addr,writedata); emit sendSerialDataToFPGA(2,map.value(addr).addr,map.value(addr).data,map.value(addr).len,1); } unsigned char data_a440[1]; void DevOp::fpgaWrD(int addr,unsigned int dat,int len){ if(len > 2){ QString hexStr = QString::number(addr, 16).toUpper(); return; } writeDataValue writedata; writedata.addr = addr; writedata.data[0] = dat; writedata.data[1] = dat>>8; writedata.len = len; mapValue.insert(addr,writedata); fpgaWr(addr,data_a440,1); } void DevOp::fpgaResetWarning(char mode){ if(mode==1){ resumeFault(); } } unsigned int DevOp::fpgaRdD(int addr,int len){ unsigned int data = 0; if(len > 4){ DisErrorMsg(); return 0; } fpgaRd(addr, (unsigned char *)&data, len); return data; } unsigned char dataofReleaseValve[1]; void DevOp::controlReleaseValve(bool openFlag){ if(pInkJectPrinter == NULL) return; unsigned char dat=0; if(openFlag){ dataofReleaseValve[0]=0x11; emit sendSerialDataToSTM32(2,0x17,dataofReleaseValve,1,2); }else{ dataofReleaseValve[0]=0x10; emit sendSerialDataToSTM32(2,0x17,dataofReleaseValve,1,2); } releaseValveOpenFlag = openFlag; pumpValveCtrl(); } unsigned char dataofMixValve[1]; void DevOp::controlMixValve(bool openFlag){ if(pInkJectPrinter == NULL) return; if(openFlag){ dataofMixValve[0]=0x11; emit sendSerialDataToSTM32(2,0x18,dataofMixValve,1,2); }else{ dataofMixValve[0]=0x10; emit sendSerialDataToSTM32(2,0x18,dataofMixValve,1,2); } mixValveFlag = openFlag; pumpValveCtrl(); } unsigned char dataofInkValve[1]; void DevOp::controlInkValve(bool openFlag){ if(pInkJectPrinter == NULL) return; unsigned char dat=0; if(openFlag){ dataofInkValve[0]=0x11; emit sendSerialDataToSTM32(2,0x15,dataofInkValve,1,2); }else{ dataofInkValve[0]=0x10; emit sendSerialDataToSTM32(2,0x15,dataofInkValve,1,2); } inkValveOpenFlag = openFlag; pumpValveCtrl(); } unsigned char dataofInkValvePWM[1]; void DevOp::controlInkValvePWMSTM32(int PWMPulse){ if(pInkJectPrinter == NULL) return; dataofInkValvePWM[0]=0x11+PWMPulse; emit sendSerialDataToSTM32(2,0x15,dataofInkValvePWM,1,2); } unsigned char dataofCycleValve[1]; void DevOp::controlCycleValve(bool openFlag){ if(pInkJectPrinter == NULL) return; if(openFlag){ dataofCycleValve[0]=0x11; emit sendSerialDataToSTM32(2,0x16,dataofCycleValve,1,2); }else{ dataofCycleValve[0]=0x10; emit sendSerialDataToSTM32(2,0x16,dataofCycleValve,1,2); } cycleValveOpenFlag = openFlag; pumpValveCtrl(); } unsigned char dataofCompressPump[1]; void DevOp::controlCompressPump(bool openFlag){ if(pInkJectPrinter == NULL) return; if(openFlag){ dataofCompressPump[0]=0x11; emit sendSerialDataToSTM32(2,0x11,dataofCompressPump,1,2); }else{ dataofCompressPump[0]=0x10; emit sendSerialDataToSTM32(2,0x11,dataofCompressPump,1,2); } compressPumpOpenFlag = openFlag; pumpValveCtrl(); } #define PWM_IOCTL_SET_FREQ 1 // PWM输出 #define PWM_IOCTL_STOP 0 //设置为低电平输出 #define PWM_IOCTL_HIGH 2 // 设置为高电平输出 #define PWM_IOCTL_SET_WIDE 3 //#define FRE_SP 12000 #define FRE_SP 13760 unsigned char dataofViscosity[1]; void DevOp::controlViscosityPump(bool openFlag){ if(pInkJectPrinter == NULL) return; viscosityPumpOpenFlag = openFlag; QDateTime currentDateTime = QDateTime::currentDateTime(); QString timeString = currentDateTime.toString("yyyy-MM-dd hh:mm:ss.zzz"); pumpValveCtrl(); if(openFlag){ dataofViscosity[0] = 0x11; emit sendSerialDataToSTM32(2,0x13,dataofViscosity,1,2); }else{ dataofViscosity[0] = 0x10; emit sendSerialDataToSTM32(2,0x13,dataofViscosity,1,2); } } unsigned char dataofMainInkPump[1]; void DevOp::controlMainInkPump(bool openFlag){ ioctl(iocontrl, !openFlag, 3); mainInkPumpOpenFlag = openFlag; if(openFlag){ dataofMainInkPump[0]=0x11; emit sendSerialDataToSTM32(2,0x14,dataofMainInkPump,1,2); }else{ dataofMainInkPump[0]=0x10; emit sendSerialDataToSTM32(2,0x14,dataofMainInkPump,1,2); } } void DevOp::controlInkValvePWM(bool openFlag) { if(openFlag){ // 先设置高电平,然后设置占空比和频率 ioctl(pwm_ink, PWM_IOCTL_HIGH, 1); ioctl(pwm_ink, PWM_IOCTL_SET_WIDE, 100); // 设置为100%占空比,即全开,持续2秒 ioctl(pwm_ink, PWM_IOCTL_SET_FREQ, FRE_SP); // 使用MySleep函数等待2秒,保持高电平状态 MySleep(100); // 2秒后,调整为原来的占空比和频率 ioctl(pwm_ink, PWM_IOCTL_SET_WIDE, 70); ioctl(pwm_ink, PWM_IOCTL_SET_FREQ, FRE_SP); // 根据需要决定是否停止PWM信号,如果希望持续输出,则注释掉这一行 // ioctl(pwm_ink, PWM_IOCTL_STOP); } else{ // 关闭时直接停止PWM信号 ioctl(pwm_ink, PWM_IOCTL_STOP); } inkValveOpenFlag1 = openFlag; if(!reclaimPumpOpenFlag && inkValveOpenFlag1) controlReclaimPump2(); pumpValveCtrl(); } void DevOp::controlInkValvePWM2() { // 先设置高电平,然后设置占空比和频率 ioctl(pwm_ink, PWM_IOCTL_HIGH, 1); ioctl(pwm_ink, PWM_IOCTL_SET_WIDE, 100); // 设置为100%占空比,即全开,持续2秒 ioctl(pwm_ink, PWM_IOCTL_SET_FREQ, FRE_SP); // 使用MySleep函数等待100ms,保持高电平状态 MySleep(50); // 100ms后,调整为原来的占空比和频率 ioctl(pwm_ink, PWM_IOCTL_SET_WIDE, 70); ioctl(pwm_ink, PWM_IOCTL_SET_FREQ, FRE_SP); // 关闭时直接停止PWM信号 ioctl(pwm_ink, PWM_IOCTL_STOP); } unsigned char dataofReclaimPump[1]; void DevOp::controlReclaimPump(bool openFlag,bool fullSpeed) { if(openFlag){ // 如果只发送0x11则是50%占空比。其余占空比公式:发送数据=占空比+0x11 dataofReclaimPump[0]=fullSpeed?90:(sysPara->para.reclaimPumpPWMWidth?sysPara->para.reclaimPumpPWMWidth:90)+0x11; emit sendSerialDataToSTM32(2,0x12,dataofReclaimPump,1,2); }else{ dataofReclaimPump[0]=0x10; emit sendSerialDataToSTM32(2,0x12,dataofReclaimPump,1,2); } reclaimPumpOpenFlag = openFlag; pumpValveCtrl(); } void DevOp::controlReclaimPump2() { ioctl(pwm_sp, PWM_IOCTL_SET_FREQ, FRE_SP); //sysset.phaseByHandValue 总数100,设置成100好像无效 ioctl(pwm_sp, PWM_IOCTL_SET_WIDE, 50); ioctl(pwm_sp, PWM_IOCTL_STOP); //PWM_IOCTL_STOP= 2 } unsigned char dataofHeater[1]; void DevOp::controlHeater(bool openFlag){ if(!openFlag) dataofHeater[0] = 0x10; else dataofHeater[0] = 0x11; emit sendSerialDataToSTM32(2,0x1A,dataofHeater,1,2); heaterOnFlag = openFlag; pumpValveCtrl(); } unsigned char dataofBeeper[1]; void DevOp::controlBeeper(bool openFlag){ if(TEST_MODE) openFlag = false; if(!openFlag) dataofBeeper[0] = 0x10; else dataofBeeper[0] = 0x11; emit sendSerialDataToSTM32(2,0x19,dataofBeeper,1,2); beeperOnFlag = openFlag; } unsigned char dataofLEDLight[1]; void DevOp::controlRedLight(bool openFlag){ if(openFlag)//2013-12-11 红绿黄报警灯 dataofLEDLight[0] = REDLIGHTCODE; else dataofLEDLight[0] = NOLEDLIGHT; emit sendSerialDataToSTM32(2,0x1C,dataofLEDLight,1,2); RedLightOnFlag = openFlag; } void DevOp::controlGreenLight(bool openFlag){ if(openFlag)//2013-12-11 红绿黄报警灯 dataofLEDLight[0] = GREENLIGHTCODE; else dataofLEDLight[0] = NOLEDLIGHT; emit sendSerialDataToSTM32(2,0x1C,dataofLEDLight,1,2); GreenLightOnFlag = openFlag; } void DevOp::controlYellowLight(bool openFlag){ if(openFlag)//2013-12-11 红绿黄报警灯 dataofLEDLight[0] = YELLOWLIGHTCODE; else dataofLEDLight[0] = NOLEDLIGHT; emit sendSerialDataToSTM32(2,0x1C,dataofLEDLight,1,2); YellowLightOnFlag = openFlag; } void DevOp::controlFan1(bool openFlag) { ioctl(iocontrl, openFlag, 15); } void DevOp::controlFan2(bool openFlag) { ioctl(iocontrl, openFlag, 16); } unsigned char dataofPowerOff[1]; void DevOp::powerOff(void){ dataofPowerOff[0]=0x10; stm32Wr(0xFE,dataofPowerOff,1); qDebug()<<"Send PowerOFF Command"; } unsigned char dataofReclaimTank[1]; void DevOp::controlReclaimTankOpen(bool enableFlag){ if(enableFlag){ dataofReclaimTank[0]=0x12; emit sendSerialDataToSTM32(2,0x01,dataofReclaimTank,1,2); } else{ dataofReclaimTank[0]=0x10; emit sendSerialDataToSTM32(2,0x01,dataofReclaimTank,1,2); } reclaimTankCloseEnableFlag = false; reclaimTankOpenEnableFlag = enableFlag; } void DevOp::controlReclaimTankClose(bool enableFlag){ if(enableFlag){ dataofReclaimTank[0]=0x11; emit sendSerialDataToSTM32(2,0x01,dataofReclaimTank,1,2); } else{ dataofReclaimTank[0]=0x10; emit sendSerialDataToSTM32(2,0x01,dataofReclaimTank,1,2); } reclaimTankOpenEnableFlag = false; reclaimTankCloseEnableFlag = enableFlag; } bool DevOp::isReleaseValveOpen(){ return releaseValveOpenFlag; } bool DevOp::isMixValveOpen(){ return mixValveFlag; } bool DevOp::isInkValveOpen(){ return inkValveOpenFlag; } bool DevOp::isInkValveOpen1(){ return inkValveOpenFlag1; } bool DevOp::isCycleValveOpen(){ return cycleValveOpenFlag; } bool DevOp::isCompressPumpOpen(){ return compressPumpOpenFlag; } bool DevOp::isViscosityPumpOpen(){ return viscosityPumpOpenFlag; } bool DevOp::isMainInkPumpOpen(){ return mainInkPumpOpenFlag; } bool DevOp::isReclaimPumpOpen(){ return reclaimPumpOpenFlag; } bool DevOp::isHighVoltageOpen(){ return highVoltageOpenFlag; } bool DevOp::isReclaimTankOpenEnable(){ return reclaimTankOpenEnableFlag; } bool DevOp::isReclaimTankCloseEnable(){ return reclaimTankCloseEnableFlag; } bool DevOp::isBeeperEnable(){ return beeperOnFlag; } bool DevOp::isRedLightEnable(){ //2013-12-11 红绿黄报警灯 return RedLightOnFlag; } bool DevOp::isGreenLightEnable(){ return GreenLightOnFlag; } bool DevOp::isYellowLightEnable(){ return YellowLightOnFlag; } bool DevOp::isHearterEnable(){ return heaterOnFlag; } unsigned char sendStatusToFPGA[1]; void DevOp::readFgaStatus(){ fpgaRd(FPGA_STATUS_BASE_ADDR,(unsigned char *)&sysPara->status,FPGA_STATUS_BYTE_NUM); stm32Rd(0xff,((unsigned char *)&sysPara->status)+0x44,23); sendStatusToFPGA[0] = 0x00; emit sendSerialDataToFPGA(2,0xA488,sendStatusToFPGA,1,1); } void DevOp::set_totalSynPulseNum(bool wren) { short adjLen=0; Adjlen_strut adjlen_strut ={0,0,0,0,0,0}; if(sysPara==0)return; if(sysPara->para.varLenEn) { adjLen = sysPara->para.varLen; adjlen_strut.changeHeadlen = (int )( (sysPara->para.synTriggerPrintLenMm+adjLen) *sysPara->para.synPulseNumPerMm); //adjlen_strut.headCounter = sysPara->para.headLen?sysPara->para.headLen:0; adjlen_strut.headCounter = QString::number(sysPara->para.cnt1StartValue + sysPara->para.headLen).toUInt(0,16);//vx版本 adjlen_strut.uint8varLenHeadEn = sysPara->para.headLen?1:0; adjLen = sysPara->para.varLen1; adjlen_strut.changeEndlen = (int )( (sysPara->para.synTriggerPrintLenMm+adjLen) *sysPara->para.synPulseNumPerMm); adjlen_strut.endCounter = QString::number(sysPara->para.cnt1EndValue - sysPara->para.endLen).toUInt(0,16); adjlen_strut.uint8varLenEndEn = sysPara->para.endLen?1:0; } if((sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER)) { sysPara->para.totalSynPulseNum = (int )((sysPara->para.synTriggerPrintLenMm)*sysPara->para.synPulseNumPerMm); } else if(((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL ||sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE) && sysPara->para.eleEyeTriggerSynPrintEn)) { sysPara->para.totalSynPulseNum = (int )((sysPara->para.elecEyeTriggerInterval)*sysPara->para.synPulseNumPerMm); } fpgaWr(PRINT_CTRL_ADDR_BASE + 0x76, (unsigned char *)&adjlen_strut, sizeof(Adjlen_strut)); } unsigned short short2BCD(unsigned short value) { unsigned short bcd = 0; bcd = (value/1000)*4096 + ((value%1000)/100)*256 + ((value%100)/10)*16 + value%10; return bcd; } unsigned char dataofa[1]; unsigned int volGap; int DevOp::writeFpgaPrintPara(bool ignoreWarn){ qDebug() << "writeFpgaPrintPara: ignoreWarn " << ignoreWarn; unsigned int type = sysPara->status.fpgaVersionNum >> 12; // unsigned int type = 6; // if((sysPara->para.currPrintMode == FAST_PRINT) && !sysPara->para.charWidthSetEnable // || sysPara->status.build_dat.builTime == 73 || type == 6 || type == 8) if(type == 6 || type == 8) sysPara->loadVolteParaFromFile((PRINT_MODE)sysPara->para.currPrintMode); int currPrintCol = sysPara->status.currPrintCol + BLANK_COL_NUM; sysPara->para.printRowDelay = sysPara->para.currPrintMode; if(sysPara->status.isPrinting == false) sysPara->status.pixNumPerCol = sysPara->status.currPrintRow; else sysPara->status.currPrintRow = sysPara->status.pixNumPerCol; sysPara->para.pixNumPerCol = sysPara->status.pixNumPerCol; sysPara->para.reducedPixelNum = sysPara->para.reducedPixelNumRatio*sysPara->para.pixNumPerCol/100; sysPara->para.printDirection = (sysPara->para.upDownInverse?1:0) + ((sysPara->para.leftRightInverse?1:0)<<1) + ((sysPara->para.scanInverse?1:0)<<2); sysPara->para.dotNumPerCol = (sysPara->para.pixNumPerCol- sysPara->para.lineEndAdjustPointCnt)*(sysPara->para.printRowDelay + 1) + (sysPara->para.lineEndAdjustPointCnt)*(sysPara->para.lineEndAdjustPointDelay + 1); sysPara->para.dotNumPerCol = sysPara->para.pixNumPerCol? ((sysPara->para.dotNumPerCol*(sysPara->para.pixNumPerCol - sysPara->para.reducedPixelNum))/sysPara->para.pixNumPerCol):1; sysPara->para.dotNumPerCol += sysPara->para.printColDelay; sysPara->para.dotNumPerCol =( sysPara->para.alterPrint.enable)? sysPara->para.dotNumPerCol/2:sysPara->para.dotNumPerCol; sysPara->para.lastLineEndPointFixedDACValue = sysPara->para.lastLineEndPointFixedValue * MAX_FPGA_DAC_VALUE/ 1000; sysPara->para.productNumToGenerateOutputPulse = sysPara->para.pulseOutputEnable?sysPara->para.productCntPerOutputPulse:0; sysPara->para.FullColFixDacVal = sysPara->para.FullColFixVal ; // NC if(sysPara->para.pixNumPerCol - sysPara->para.reducedPixelNum < 2 && sysPara->para.pixNumPerCol > 4){ if(!ignoreWarn){ QMessageBox::warning(0,tr("警告"),QString("当前行数:%1 冗点数:%2,冗点数过多,请修改您的配置!!").arg(sysPara->para.pixNumPerCol).arg(sysPara->para.reducedPixelNum)); } } int DACStep = (sysPara->status.currPrintRow && sysPara->status.currAlterPrintRow > 0)? (sysPara->para.endVoltage - sysPara->para.startVoltage) * MAX_FPGA_DAC_VALUE/(100 * ((sysPara->para.alterPrint.enable)?sysPara->status.currAlterPrintRow :sysPara->status.currPrintRow)) :0; int steal_dac_step = sysPara->status.currPrintRow > 3? (sysPara->para.endVoltage - sysPara->para.startVoltage) * MAX_FPGA_DAC_VALUE/(100 * ((sysPara->para.alterPrint.enable)?sysPara->status.currAlterPrintRow-1:sysPara->status.currPrintRow-1)) :0; sysPara->para.steal_dac_row = steal_dac_step; int printVerticalButtom = sysPara->para.startVoltage * MAX_FPGA_DAC_VALUE/100; int printVerticalTop = sysPara->para.endVoltage * MAX_FPGA_DAC_VALUE/100; int pointAdjustVoltagePos = sysPara->para.pointVoltageAdjustPos * MAX_FPGA_DAC_VALUE/100; //点距电压调整位置 /*---------------------------------------------------------------------------------*/ // 将 满列/单点/两点/三点/四点表格 电压值 转换成 DAC(12位)值 //#define DAC_RADIO (((float)sysPara->para.dacScale)/100) // 1V 对应的DAC,看起来13.05比较接近 //整体阶梯缩放算法:比如缩放比例为80%,一列4个点最后一个点的比例为80%,阶梯为5%(100-80)/4=5,倒数第二个刚是75%,依此类推。 //#define DAC_RADIO2 (nCurrPrintRow > 1 ? (((float)(100-((100-sysPara->para.dacScale)/((nCurrPrintRow-1)>0?(nCurrPrintRow-1):1)*i)))/100) : 13.05) // 将 满列/单点/两点/三点/四点表格 电压值 转换成 DAC(12位)值 /*---------------------------------------------------------------------------------*/ //#define DAC_RADIO (14.36) // 1V 对应的DAC,看起来13.05比较接近 //#define DAC_RADIO (13.05) // 1V 对应的DAC,看起来13.05比较接近 //#define DAC_RADIO (13.05*sysPara->para.dacScale/100) // 1V 对应的DAC,看起来13.05比较接近 if(sysPara->para.reducedPixelNumRatio >=20){ fast_128k_7dot_continue_default_dac_B[2] = 115; fast_128k_9dot_continue_default_dac_B[2] = 115; fast_128k_9dot_full_default_dac_B[8] = 202; } for(int i = 0; i < sysPara->status.currPrintRow; i++)//等差电压 { if(!sysPara->para.scanInverse) DACArray[i] = printVerticalButtom + i*DACStep; else DACArray[i] = printVerticalTop - i*DACStep; if(DACArray[i] >= pointAdjustVoltagePos) { DACArray[i] += sysPara->para.PointVoltageAdjustValue; } notGapDACArray[i] = DACArray[i]; fullColDACArray[i] = DACArray[i]; } if(sysPara->para.FullColFixVal == 1)//勾选了调整电压 DACValueWithVoltageAdj(); if(sysPara->para.alterPrint.enable) { for(int i = 0; i < sysPara->status.currPrintRow/2+1 && (i+sysPara->status.currPrintRow/2+1<40); i++) { DACArray[i+sysPara->status.currPrintRow/2+1] =(i < sysPara->status.currPrintRow )?DACArray[i]:0; } } if(sysPara->para.flagOfFastMode) { if ((sysPara->para.currPrintMode == FAST_PRINT) && (sysPara->status.currPrintRow <= 7)){ sysPara->status.currVoltageVersion = VersionOf67And7SuperSpeed; if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){ writeDataToFpga_No67HighSpeedMode(VersionOf67And7SuperSpeed,true); sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion; } } else if((sysPara->para.currPrintMode == STANDARD_PRINT) && (sysPara->status.currPrintRow <= 7)){ sysPara->status.currVoltageVersion = VersionOf67And7HighSpeed; if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){ writeDataToFpga_No67HighSpeedMode(VersionOf67And7HighSpeed,true); sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion; } } else if((sysPara->para.currPrintMode == FAST_PRINT) && (sysPara->status.currPrintRow <= 9)){ sysPara->status.currVoltageVersion = VersionOf67And9SuperSpeed; if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){ writeDataToFpga_No67HighSpeedMode(VersionOf67And9SuperSpeed,true); sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion; } } else if((sysPara->para.currPrintMode == STANDARD_PRINT) && (sysPara->status.currPrintRow <= 9)){ sysPara->status.currVoltageVersion = VersionOf67And9HighSpeed; if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){ writeDataToFpga_No67HighSpeedMode(VersionOf67And9HighSpeed,true); sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion; } } } else if(sysPara->status.build_dat.builTime == 73){ if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){ writeDacValue2Fpga_No73(); sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion; } } else if(type == 6 || type == 8){ if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){ writeDacValue2Fpga_No72NewVoltData(); sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion; } } else{ sysPara->status.currVoltageVersion = VersionOf67; fpgaWr(DAC_TABLE_ADDR,(unsigned char *)DACArray,sizeof(DACArray)); /* DAC vol: 0xB280 */ fpgaWr(NOT_GAP_DAC_TABLE_ADDR,(unsigned char *)notGapDACArray,sizeof(notGapDACArray)); /* DAC vol: 0xB380 */ fpgaWr(FULL_COL_DAC_TABLE_ADDR,(unsigned char *)fullColDACArray,sizeof(fullColDACArray)); /* DAC vol: 0xB480 */ sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion; } /*---------------------------------------------------------------------------------*/ unsigned char sequenceArray[64]; memset(sequenceArray,0,sizeof(sequenceArray)); int sequenceNum = 0; int startSequencePos = 0; int currSequencePos = 0; int rowSequenceMode = sysPara->para.rowSequenceMode?sysPara->para.rowSequenceMode:1; for(int i = 0; i < sysPara->status.currPrintRow; i++){ sequenceArray[i] = currSequencePos; currSequencePos += rowSequenceMode; if(currSequencePos >= sysPara->status.currPrintRow){ startSequencePos ++; currSequencePos = startSequencePos; } sequenceNum ++; if(sequenceNum >= sysPara->status.currPrintRow) break; } if(!sysPara->para.flagOfFastMode && type!=6) fpgaWr(ROW_PRINT_SEQNENCE_ADDR,(unsigned char *)sequenceArray,sizeof(sequenceArray)); /* 0xB200 */ /*---------------------------------------------------------------------------------*/ sysPara->para.phase_detect_high_cnt = (50*sysPara->para.divideRatio*2)/100; sysPara->para.phase_detect_voltage = sysPara->para.phaseDetectVol* MAX_FPGA_DAC_VALUE/1000; if(( sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER && (sysPara->para.eleEyeClearCntInSynMode ) ) || ((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE) && sysPara->para.synClearCntInEleEyeMode)) sysPara->para.extClearAllCntEnable = sysPara->para.eleEyeClearCntInSynMode; // 01 10 11 else sysPara->para.extClearAllCntEnable = 0; // 0 /*-----------------------------------------------------------------------------------------------*/ unsigned int timeTpDly=sysPara->para.printDelayMs; if(sysPara->para.printTriggerMode == PRINT_TRIGGER_TIME){ if((sysPara->para.timeTriggerPrintMode == TIME_TRIGGER_PRINT_MODE_END_TO_HEAD)){ int dotNumPerCol = sysPara->para.dotNumPerCol; long printTmMs = 1.0f*dotNumPerCol*(1 + sysPara->para.charBold)*currPrintCol*(2*sysPara->para.divideRatio)/(FPGA_SYS_HZ/1000); timeTpDly +=printTmMs; } } sysPara->para.timeTriggerPrintDelayMs = timeTpDly; // 20150112 sysPara->para.timeTriggerPrintDelayMsH=timeTpDly>>16; /*---------------------------------------线性平均拟合---------------------------------*/ int currHighVoltageIndex = sysPara->para.HighVoltageAmplitude/10; if((unsigned int)currHighVoltageIndex >= ARRAY_SIZE(sysPara->para.highVoltageRecord)){ if(!ignoreWarn){ QMessageBox::warning(NULL,tr("警告"),tr("字高超出范围")); } } else { int expected_voltage_DAC = sysPara->para.highVoltageRecord[currHighVoltageIndex]; int highVoltageStep = 0; if((unsigned int)currHighVoltageIndex < (ARRAY_SIZE(sysPara->para.highVoltageRecord) - 1)){ highVoltageStep = sysPara->para.highVoltageRecord[currHighVoltageIndex + 1] - sysPara->para.highVoltageRecord[currHighVoltageIndex]; } else highVoltageStep = sysPara->para.highVoltageRecord[currHighVoltageIndex] - sysPara->para.highVoltageRecord[currHighVoltageIndex - 1]; expected_voltage_DAC += highVoltageStep*(sysPara->para.HighVoltageAmplitude%10)/10; if(!expected_voltage_DAC){ sysPara->para.maxHighVoltageDAC = 0; //为零时,逻辑将忽略所有高压故障 if(!ignoreWarn){ QMessageBox::warning(nullptr, tr("警告"),tr("字高太小或是高压包数据未初始化,您当前错误将忽略所有高压错误")); } } else sysPara->para.maxHighVoltageDAC = expected_voltage_DAC + sysPara->para.highVoltageLevel; } sysPara->para.printTotalColNum = currPrintCol; sysPara->status.printTotalColNum = currPrintCol; set_totalSynPulseNum(0); if((sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER) ||((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL ||sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE) && sysPara->para.eleEyeTriggerSynPrintEn)) { unsigned int displayAreaTotalSynNum; if(sysPara->para.sysTriggerPrintMode == SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH) { #define MIN_CHAR_WIDTH 0.1 //0.1mm/列 #define MAX_CHAR_WIDTH 4.0 //4.0mm/列 displayAreaTotalSynNum = (int )( (MIN_CHAR_WIDTH +sysPara->para.printColDelay*(MAX_CHAR_WIDTH - MIN_CHAR_WIDTH) /100) *currPrintCol*sysPara->para.synPulseNumPerMm ); if(displayAreaTotalSynNum >= 99*sysPara->para.totalSynPulseNum/100){ displayAreaTotalSynNum = 99*sysPara->para.totalSynPulseNum/100; } } else displayAreaTotalSynNum = (int )(sysPara->para.totalSynPulseNum*sysPara->para.synTriggerPrintLenRatio/100); if(!displayAreaTotalSynNum){ if(!ignoreWarn && currPrintCol) QMessageBox::critical(NULL,tr("错误"),tr("在同步计米的情况下无打印串或显示区域为零")); } else { if(currPrintCol){ int synNumPerCol = displayAreaTotalSynNum*(1<<8)/(currPrintCol*(1 + sysPara->para.charBold)); //加宽的时候,相当于列数翻倍 if(displayAreaTotalSynNum >= (1<<24)){ if(!ignoreWarn) QMessageBox::critical(NULL,tr("错误"),tr("在同步计米的情况下喷印同步脉冲数过多,请检查你的配置")); } if(synNumPerCol >= (1<< 16)){ if(!ignoreWarn) QMessageBox::critical(NULL,tr("警告"),tr("喷印字符串太短,请增加字符串长度或在打印设置中减少喷印长度")); } if(synNumPerCol < 5){ if(!ignoreWarn) QMessageBox::critical(NULL,tr("警告"),tr("喷印长度太短,请减少字符串长度或在打印设置中增加喷印长度")); } sysPara->para.synNumPerCol = synNumPerCol; } if(sysPara->para.synPulseNumPerMm<1 || sysPara->para.synPulseNumPerMm>50) { } sysPara->para.synPulsePerMmX8 = (unsigned short)((unsigned int)sysPara->para.synPulseNumPerMm <<8); qDebug ()<<"s-"<para.synNumPerCol<<"-"<para.synPulsePerMmX8 ; } } sysPara->para.magicNum = FPGA_MAGIC_NUM_AFTER_CONF; //用来做验证的 /*-----------------------------------临时处理一下------------------------------------------------*/ unsigned char tmpHighVoltageAmplitude = sysPara->para.HighVoltageAmplitude; short phaseShift = sysPara->para.phaseShift; if(phaseShift < 0){ sysPara->para.phaseShift += 2*sysPara->para.divideRatio; } if(!sysPara->status.reclainTankReachEnd){ sysPara->para.HighVoltageAmplitude = 0; } sysPara->para.SynCntEn1 = sysPara->para.SynCntEn; if(sysPara->para.diaphramOffset == 0 || sysPara->para.diaphramOffset > 60) { sysPara->para.diaphramOffset = 10; } fpgaWr(PRINT_CTRL_ADDR_BASE+0x72,(unsigned char *)&sysPara->para.diaphramOffset,2); //发送隔膜位置偏移量 fpgaWr(PRINT_CTRL_ADDR_BASE+0x74,(unsigned char *)&sysPara->para.steal_dac_row,2); fpgaWr(PRINT_CTRL_ADDR_BASE,(unsigned char *)&sysPara->para,FPGA_PRINT_PARA_BYTE_NUM); //0x3C fpgaWr(PRINT_CTRL_ADDR_BASE+0x3C,(unsigned char *)&sysPara->para.eleMaskTime,4); //0x3C 3D 3E 3F LockTime Alt-MirrorGap fpgaWr(PRINT_CTRL_ADDR_BASE+0x44,(unsigned char *)&sysPara->para.alterPrint,12); // Send AltePrit and cntNatureValue option 2017-7-18 fpgaWr(PRINT_CTRL_ADDR_BASE+0x68,(unsigned char *)&sysPara->para.stepPrint,sizeof(sysPara->para.stepPrint)); // Send StepPring 2017-7-18 sysPara->devOp->pumpValveCtrl(); // send data to A45A~5B Ctrl Para //20140423 volGap = (int )(sysPara->para.outputPulseDelayMs *sysPara->para.synPulseNumPerMm); fpgaWr(PRINT_CTRL_ADDR_BASE+0x64,(unsigned char *)&volGap,4);// 0x64~0x68 // 发送卷间隔 unsigned short pulseOutputAfterCnt1Printed = sysPara->para.pulse_sinal_value*10*sysPara->para.synPulseNumPerMm; sysPara->devOp->fpgaWr(PRINT_CTRL_ADDR_BASE + 0x88, (unsigned char *)&pulseOutputAfterCnt1Printed, 2); unsigned short pulseOutputAfterCnt1Print = short2BCD(sysPara->para.productNumToGenerateOutputPulse); fpgaWr(PRINT_CTRL_ADDR_BASE+0x90,(unsigned char *)&pulseOutputAfterCnt1Print,2); unsigned int v[32]; QString str="ADJ:"; str+= QString().sprintf("%d,",DACStep); v[0]=0; for(int i=0;i<32;i++) { v[0] =v[0]+(DACStep/(2+i*i)); str+= QString().sprintf("%d,",v[0]); } sysPara->para.HighVoltageAmplitude = tmpHighVoltageAmplitude; sysPara->para.phaseShift = phaseShift; if(sysPara->para.OuputPulseCol > 200) sysPara->para.OuputPulseCol = 200; writeSyncAndDelayPrintCount(sysPara->para.enbSyncAndTimeTriggerLimit, sysPara->para.syncAndTimeTriggerLimit); LogInfo::setRunStatusText(QString("Sync and time trigger limit: %1, num: %2") .arg(sysPara->para.enbSyncAndTimeTriggerLimit).arg(sysPara->para.syncAndTimeTriggerLimit)); /*---------------------------------------------------------------------------------------*/ setOscillatorVoltage(sysPara->para.oscillatorVoltage); //因为经过调整参数,所以开机也要多发送一次 sysPara->saveParaToFile(); sysPara->status.configDone = 1; return 0; } template QString arrayToStr(const T* arr, int n) { if (n <= 0) return QString(); QString result; for (int i = 0; i < n; ++i) { if (i != 0) result += ','; result += QString::number(arr[i]); } return result; } void DevOp::writeDacValue2Fpga_No73() { LogInfo::setRunStatusText(tr("No73 send DAC Data.")); static quint16 matchFullDACArray[48]; static quint16 matchStealDACArray[48]; static quint16 matchContinousDACArray[48]; static quint16 rowDelayArray[64]; static quint8 head1RowDelayArray[64]; static quint8 fullColRowDelayArray[64]; static quint8 adjDACParameter[64]; static quint16 matchTotalTableDACArray[15][64]; quint16* matchOneDACArray = &matchTotalTableDACArray[0][0]; quint16* matchTwoDACArray = &matchTotalTableDACArray[1][0]; quint16* matchThreeDACArray = &matchTotalTableDACArray[3][0]; quint16* matchFourDACArray = &matchTotalTableDACArray[6][0]; quint16* matchFiveDACArray = &matchTotalTableDACArray[10][0]; static quint8 matchPrevious1DotDACArray[48]; static quint8 matchPrevious2DotDACArray[48]; static quint8 matchPrevious3DotDACArray[48]; static quint8 matchPrevious4DotDACArray[48]; static quint8 matchPrevious5DotDACArray[48]; static quint8 matchGapDACArray[64][5]; static quint8 matchP3dotGapDACArray[64][5]; memset(matchFullDACArray, 0, sizeof(matchFullDACArray)); memset(matchStealDACArray, 0, sizeof(matchStealDACArray)); memset(matchContinousDACArray, 0, sizeof(matchContinousDACArray)); memset(rowDelayArray, 0, sizeof(rowDelayArray)); memset(head1RowDelayArray, 0, sizeof(head1RowDelayArray)); memset(fullColRowDelayArray, 0, sizeof(fullColRowDelayArray)); memset(matchTotalTableDACArray, 0, sizeof(matchTotalTableDACArray)); memset(matchPrevious1DotDACArray, 0, sizeof(matchPrevious1DotDACArray)); memset(matchPrevious2DotDACArray, 0, sizeof(matchPrevious2DotDACArray)); memset(matchPrevious3DotDACArray, 0, sizeof(matchPrevious3DotDACArray)); memset(matchPrevious4DotDACArray, 0, sizeof(matchPrevious4DotDACArray)); memset(matchPrevious5DotDACArray, 0, sizeof(matchPrevious5DotDACArray)); memset(matchGapDACArray, 0, sizeof(matchGapDACArray)); memset(matchP3dotGapDACArray, 0, sizeof(matchP3dotGapDACArray)); memset(adjDACParameter, 0, sizeof(adjDACParameter)); int baseDacScale = sysPara->para.endVoltage; QFile file("./conf/full_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); matchFullDACArray[i] = sysPara->voltePara_No73.pixel_full_table[i] ; out << sysPara->voltePara_No73.pixel_full_table[i]<< "\n"; } file.close(); file.setFileName("./conf/steal_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); matchStealDACArray[i] = sysPara->voltePara_No73.pixel_steal_table[i]; out << sysPara->voltePara_No73.pixel_steal_table[i]<< "\n"; } file.close(); file.setFileName("./conf/continous_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); matchContinousDACArray[i] = sysPara->voltePara_No73.pixel_continous_table[i]; out << sysPara->voltePara_No73.pixel_continous_table[i]<< "\n"; } file.close(); file.setFileName("./conf/row_delay.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); rowDelayArray[i] = sysPara->voltePara_No73.row_delay_table[i]; out << sysPara->voltePara_No73.row_delay_table[i]<< "\n"; } file.close(); file.setFileName("./conf/head1_row_delay.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); head1RowDelayArray[i] = sysPara->voltePara_No73.head1_row_delay_table[i]; out << sysPara->voltePara_No73.head1_row_delay_table[i]<< "\n"; } file.close(); file.setFileName("./conf/full_row_delay.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); fullColRowDelayArray[i] = sysPara->voltePara_No73.full_row_delay_table[i]; out << sysPara->voltePara_No73.full_row_delay_table[i]<< "\n"; } file.close(); file.setFileName("./conf/1_table_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); *matchOneDACArray = sysPara->voltePara_No73.pixel_1_table[i];// - head1_base_table[i]; out << sysPara->voltePara_No73.pixel_1_table[i] << "\n"; ++matchOneDACArray; } file.close(); file.setFileName("./conf/2_table_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); *matchTwoDACArray = sysPara->voltePara_No73.pixel_2_table[i][0];// - head1_base_table[i]; ++matchTwoDACArray; *matchTwoDACArray = sysPara->voltePara_No73.pixel_2_table[i][1];// - tail1_base_table[i]; ++matchTwoDACArray; out << sysPara->voltePara_No73.pixel_2_table[i][0]; out << ","; out << sysPara->voltePara_No73.pixel_2_table[i][1]; out << "\n"; } file.close(); file.setFileName("./conf/3_table_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); *matchThreeDACArray = sysPara->voltePara_No73.pixel_3_table[i][0];// - head1_base_table[i]; ++matchThreeDACArray; *matchThreeDACArray = sysPara->voltePara_No73.pixel_3_table[i][1];// - head2_base_table[i]; ++matchThreeDACArray; *matchThreeDACArray = sysPara->voltePara_No73.pixel_3_table[i][2];// - tail1_base_table[i]; ++matchThreeDACArray; out << sysPara->voltePara_No73.pixel_3_table[i][0]; out << ","; out << sysPara->voltePara_No73.pixel_3_table[i][1]; out << ","; out << sysPara->voltePara_No73.pixel_3_table[i][2]; out << "\n"; } file.close(); file.setFileName("./conf/4_table_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); *matchFourDACArray = sysPara->voltePara_No73.pixel_4_table[i][0];// - head1_base_table[i]; ++matchFourDACArray; *matchFourDACArray = sysPara->voltePara_No73.pixel_4_table[i][1];// - head2_base_table[i]; ++matchFourDACArray; *matchFourDACArray = sysPara->voltePara_No73.pixel_4_table[i][2];// - head3_base_table[i]; ++matchFourDACArray; *matchFourDACArray = sysPara->voltePara_No73.pixel_4_table[i][3];// - tail1_base_table[i]; ++matchFourDACArray; out << sysPara->voltePara_No73.pixel_4_table[i][0]; out << ","; out << sysPara->voltePara_No73.pixel_4_table[i][1]; out << ","; out << sysPara->voltePara_No73.pixel_4_table[i][2]; out << ","; out << sysPara->voltePara_No73.pixel_4_table[i][3]; out << "\n"; } file.close(); file.setFileName("./conf/5_table_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { QTextStream out(&file); *matchFiveDACArray = sysPara->voltePara_No73.pixel_5_table[i][0];// - head1_base_table[i]; ++matchFiveDACArray; *matchFiveDACArray = sysPara->voltePara_No73.pixel_5_table[i][1];// - head2_base_table[i]; ++matchFiveDACArray; *matchFiveDACArray = sysPara->voltePara_No73.pixel_5_table[i][2];// - head3_base_table[i]; ++matchFiveDACArray; *matchFiveDACArray = sysPara->voltePara_No73.pixel_5_table[i][3];// - tail2_base_table[i]; ++matchFiveDACArray; *matchFiveDACArray = sysPara->voltePara_No73.pixel_5_table[i][4];// - tail1_base_table[i]; ++matchFiveDACArray; out << sysPara->voltePara_No73.pixel_5_table[i][0]; out << ","; out << sysPara->voltePara_No73.pixel_5_table[i][1]; out << ","; out << sysPara->voltePara_No73.pixel_5_table[i][2]; out << ","; out << sysPara->voltePara_No73.pixel_5_table[i][3]; out << ","; out << sysPara->voltePara_No73.pixel_5_table[i][4]; out << "\n"; } file.close(); file.setFileName("./conf/gap_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { for (int j = 0; j < 5; j++) { matchGapDACArray[i][j] = sysPara->voltePara_No73.pixel_gap_table[i][j]; } QTextStream out(&file); out << sysPara->voltePara_No73.pixel_gap_table[i][0]; out << ","; out << sysPara->voltePara_No73.pixel_gap_table[i][1]; out << ","; out << sysPara->voltePara_No73.pixel_gap_table[i][2]; out << ","; out << sysPara->voltePara_No73.pixel_gap_table[i][3]; out << ","; out << sysPara->voltePara_No73.pixel_gap_table[i][4]; out << "\n"; } file.close(); file.setFileName("./conf/p3dot_gap_dac_raw.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < 48; i++) { for (int j = 0; j < 5; j++) { matchP3dotGapDACArray[i][j] = sysPara->voltePara_No73.pixel_gap_post_3dot_table[i][j]; } QTextStream out(&file); out << sysPara->voltePara_No73.pixel_gap_post_3dot_table[i][0]; out << ","; out << sysPara->voltePara_No73.pixel_gap_post_3dot_table[i][1]; out << ","; out << sysPara->voltePara_No73.pixel_gap_post_3dot_table[i][2]; out << ","; out << sysPara->voltePara_No73.pixel_gap_post_3dot_table[i][3]; out << ","; out << sysPara->voltePara_No73.pixel_gap_post_3dot_table[i][4]; out << "\n"; } file.close(); file.setFileName("./conf/general_dac_parameter.txt"); file.open(QIODevice::WriteOnly); for (int i = 0; i < sizeof(sysPara->voltePara_No73.pixel_para_table)/sizeof(sysPara->voltePara_No73.pixel_para_table[0]); i++) { adjDACParameter[i] = sysPara->voltePara_No73.pixel_para_table[i]; QTextStream out(&file); out << adjDACParameter[i]; out << "\n"; } file.close(); #if 0 /* apply scale */ for (int i = 0; i < sizeof(matchFullDACArray)/sizeof (matchFullDACArray[0]); i++) { matchFullDACArray[i] = (matchFullDACArray[i] * baseDacScale)/100; } for (int i = 0; i < sizeof(matchContinousDACArray)/sizeof (matchContinousDACArray[0]); i++) { matchContinousDACArray[i] = (matchContinousDACArray[i] * baseDacScale)/100; } for (int i = 0; i < 15; i++) { for (int j = 0; j < 64; j++) { matchTotalTableDACArray[i][j] = (matchTotalTableDACArray[i][j] * baseDacScale)/100; } } for (int i = 0; i < 48; i++) { QTextStream out(&file); sysPara->voltePara_No73.pixel_full_table[i] = (sysPara->voltePara_No73.pixel_full_table[i]* baseDacScale)/100; } for (int i = 0; i < 48; i++) { QTextStream out(&file); sysPara->voltePara_No73.pixel_continous_table[i] = (sysPara->voltePara_No73.pixel_continous_table[i]* baseDacScale)/100; } for (int i = 0; i < 48; i++) { sysPara->voltePara_No73.pixel_1_table[i] = (sysPara->voltePara_No73.pixel_1_table[i]* baseDacScale)/100; sysPara->voltePara_No73.pixel_2_table[i][0] = (sysPara->voltePara_No73.pixel_2_table[i][0]* baseDacScale)/100; sysPara->voltePara_No73.pixel_2_table[i][1] = (sysPara->voltePara_No73.pixel_2_table[i][1]* baseDacScale)/100; sysPara->voltePara_No73.pixel_3_table[i][0] = (sysPara->voltePara_No73.pixel_3_table[i][0]* baseDacScale)/100; sysPara->voltePara_No73.pixel_3_table[i][1] = (sysPara->voltePara_No73.pixel_3_table[i][1]* baseDacScale)/100; sysPara->voltePara_No73.pixel_3_table[i][2] = (sysPara->voltePara_No73.pixel_3_table[i][2]* baseDacScale)/100; sysPara->voltePara_No73.pixel_4_table[i][0] = (sysPara->voltePara_No73.pixel_4_table[i][0]* baseDacScale)/100; sysPara->voltePara_No73.pixel_4_table[i][1] = (sysPara->voltePara_No73.pixel_4_table[i][1]* baseDacScale)/100; sysPara->voltePara_No73.pixel_4_table[i][2] = (sysPara->voltePara_No73.pixel_4_table[i][2]* baseDacScale)/100; sysPara->voltePara_No73.pixel_4_table[i][3] = (sysPara->voltePara_No73.pixel_4_table[i][3]* baseDacScale)/100; sysPara->voltePara_No73.pixel_5_table[i][0] = (sysPara->voltePara_No73.pixel_5_table[i][0]* baseDacScale)/100; sysPara->voltePara_No73.pixel_5_table[i][1] = (sysPara->voltePara_No73.pixel_5_table[i][1]* baseDacScale)/100; sysPara->voltePara_No73.pixel_5_table[i][2] = (sysPara->voltePara_No73.pixel_5_table[i][2]* baseDacScale)/100; sysPara->voltePara_No73.pixel_5_table[i][3] = (sysPara->voltePara_No73.pixel_5_table[i][3]* baseDacScale)/100; sysPara->voltePara_No73.pixel_5_table[i][4] = (sysPara->voltePara_No73.pixel_5_table[i][4]* baseDacScale)/100; } #endif fpgaWr(0xB300, (unsigned char *)(matchFullDACArray), sizeof (matchFullDACArray)); fpgaWr(0xB380, (unsigned char *)(matchContinousDACArray), sizeof (matchContinousDACArray)); fpgaWr(0xB400, (unsigned char *)(&rowDelayArray[0]), sizeof (rowDelayArray)); fpgaWr(0xB480, (unsigned char *)(&head1RowDelayArray[0]), sizeof(head1RowDelayArray)); fpgaWr(0xB4C0, (unsigned char *)(&fullColRowDelayArray[0]), sizeof (fullColRowDelayArray)); fpgaWr(0xA600, (unsigned char *)(matchTotalTableDACArray[0]), sizeof (matchTotalTableDACArray)); // fpgaWr(0xA600, (unsigned char *)(sysPara->voltePara_No73.pixel_1_table), sizeof(sysPara->voltePara_No73.pixel_1_table)); //fpgaWr(0xB500, (unsigned char *)(matchTotalTableDACArray[0]), sizeof (matchTotalTableDACArray)); fpgaWr(0xBC00, (unsigned char *)(matchP3dotGapDACArray[0]), sizeof (matchP3dotGapDACArray)); // 0xBC00 - 0xBD40 fpgaWr(0xBE00, (unsigned char *)(matchGapDACArray[0]), sizeof (matchGapDACArray)); fpgaWr(0xC000, (unsigned char *)sysPara->voltePara_No73.pixel_big_table, sizeof(sysPara->voltePara_No73.pixel_big_table));// 写入8个 big data fpgaWr(0xC100, (unsigned char *)adjDACParameter, sizeof(adjDACParameter));// 写入8个 LogInfo::setRunStatusText("Write dac value to fpga no 73:"); // TODO:: 用setRunStatusText输出上面十组数据的前10位的十六进制值 LogInfo::setRunStatusText("0xB300: 0x" + arrayToStr(matchFullDACArray, 10)); LogInfo::setRunStatusText("0xB380: 0x" + arrayToStr(matchContinousDACArray, 10)); LogInfo::setRunStatusText("0xB400: 0x" + arrayToStr(rowDelayArray, 10)); LogInfo::setRunStatusText("0xB480: 0x" + arrayToStr(head1RowDelayArray, 10)); LogInfo::setRunStatusText("0xB4C0: 0x" + arrayToStr(fullColRowDelayArray, 10)); LogInfo::setRunStatusText("0xA600: 0x" + arrayToStr(matchTotalTableDACArray[0], 10)); LogInfo::setRunStatusText("0xBC00: 0x" + arrayToStr(matchP3dotGapDACArray[6], 5)); LogInfo::setRunStatusText("0xBE00: 0x" + arrayToStr(matchGapDACArray[6], 5)); LogInfo::setRunStatusText("0xC000: 0x" + arrayToStr(sysPara->voltePara_No73.pixel_big_table[0], 8)); LogInfo::setRunStatusText("0xC100: 0x" + arrayToStr(adjDACParameter, 5)); } // 齿轮泵设置 unsigned char dataofGearPump[2]; void DevOp::WriteMoterPump() { dataofGearPump[0] = sysPara->para.gearPumpValue; dataofGearPump[1] = sysPara->para.gearPumpValue>>8; stm32Wr(0x1d,dataofGearPump,2); } void DevOp::ReadSomeDataForLostPrint(void) { fpgaRd(FPGA_STATUS_BASE_ADDR+0x46,(unsigned char *)&sysPara->status.r_print_q, 14); } void DevOp::ReadCnt1GroupStatus(void) { #ifdef COUNTER1_BY_GROUP /* 分段计米 */ fpgaRd(READ_CNT1GROUP_CURR_LOOP,(unsigned char *)&sysPara->status.cnt1GroupCurrentLoop,sizeof(sysPara->status.cnt1GroupCurrentLoop)); fpgaRd(READ_CNT1GROUP_CURR_INDEX,(unsigned char *)&sysPara->status.cnt1GroupRunningIndex,sizeof(sysPara->status.cnt1GroupRunningIndex)); #endif } unsigned char dataofcnt1GroupCntTmp[1]; unsigned char dataofcnt1GroupNum[1]; unsigned char dataofcnt1GroupSettingSend[12]; void DevOp::writeCnt1GroupSetting(bool bCntByGroupEnable){ #ifdef COUNTER1_BY_GROUP /* 分段计米 */ struct { unsigned char cnt1GroupNum; int StartValue; int EndValue; int LoopTimes; }cnt1GroupSettingSend; if(sysPara->para.cnt1ByGroupEnalbe) { fpgaWr(WRITE_CNT1GROUP_COUNT,(unsigned char *)&sysPara->para.Cnt1ByGroup.cnt1GroupCnt,sizeof(sysPara->para.Cnt1ByGroup.cnt1GroupCnt)); for(int i=0;ipara.Cnt1ByGroup.cnt1GroupCnt;i++) { cnt1GroupSettingSend.cnt1GroupNum = (unsigned char)i; //memcpy((unsigned char *)&cnt1GroupSettingSend.cnt1GroupSettings, &sysPara->para.Cnt1ByGroup.cnt1GroupSettings[i], sizeof(sysPara->para.Cnt1ByGroup.cnt1GroupSettings[i])); cnt1GroupSettingSend.StartValue = QString::number(sysPara->para.Cnt1ByGroup.cnt1GroupSettings[i].StartValue).toUInt(0,16);//bcd cnt1GroupSettingSend.EndValue = QString::number(sysPara->para.Cnt1ByGroup.cnt1GroupSettings[i].EndValue).toUInt(0,16); cnt1GroupSettingSend.LoopTimes = sysPara->para.Cnt1ByGroup.cnt1GroupSettings[i].LoopTimes; dataofcnt1GroupNum[0]=cnt1GroupSettingSend.cnt1GroupNum; fpgaWr(WRITE_CNT1GROUP_NUM,dataofcnt1GroupNum,1); memcpy(dataofcnt1GroupSettingSend,(unsigned char *)&cnt1GroupSettingSend.StartValue,12); fpgaWr(WRITE_CNT1GROUP_SETTING,dataofcnt1GroupSettingSend,12); } } else { dataofcnt1GroupCntTmp[0]=0; fpgaWr(WRITE_CNT1GROUP_COUNT,(unsigned char *)&dataofcnt1GroupCntTmp,sizeof(dataofcnt1GroupCntTmp)); } #endif } void DevOp::readCalandarDat(void) { fpgaRd(READ_CALENDAR_DAT_ADDR,(unsigned char *)&sysPara->status.calandar_and_dat,16); fpgaRd((READ_CALENDAR_DAT_ADDR + 0x34) ,(unsigned char *)&sysPara->status.Status_Counter3.cnt3CurrValue,4); fpgaRd((READ_CALENDAR_DAT_ADDR + 0x38) ,(unsigned char *)&sysPara->status.XXXDay,2); } void DevOp::writeFpgaCalandar(bool Enable){ Q_UNUSED(Enable); time_t rawtime; struct tm *pTm; char buffer[20]; time( &rawtime ); pTm = localtime( &rawtime ); strftime(buffer, sizeof buffer, "%U", pTm);//%U 从星期天算,%W 从星期一算 QTime t = QTime::currentTime(); QDate d = QDate::currentDate(); int year = d.year(); sysPara->para.calandar_and_dat.leap_year = (year%400 == 0) || ((year%4 == 0) && (year%100 != 0)); //sysPara->para.calandar_and_dat.week = d.weekNumber();// sysPara->para.calandar_and_dat.dayofweek = d.dayOfWeek(); // sysPara->para.calandar_and_dat.week = QString(buffer).toInt(); sysPara->para.calandar_and_dat.week = d.weekNumber(); sysPara->para.calandar_and_dat.year = d.year(); sysPara->para.calandar_and_dat.month = d.month(); sysPara->para.calandar_and_dat.day = d.day(); sysPara->para.calandar_and_dat.hour = t.hour(); sysPara->para.calandar_and_dat.minute = t.minute(); sysPara->para.calandar_and_dat.second = t.second(); //将变量初始值写入寄存器 sysPara->para.calandar_and_dat.cnt1InitValue = QString::number(sysPara->para.cnt1StartValue).toUInt(0,16); //bcd sysPara->para.calandar_and_dat.cnt1End = QString::number(sysPara->para.cnt1EndValue).toUInt(0,16); sysPara->para.calandar_and_dat.cnt1Repeat = sysPara->para.cnt1RepeateValue; sysPara->para.calandar_and_dat.cnt1CurrValue = QString::number(sysPara->para.cnt1CurrValue).toUInt(0,16); int step = sysPara->para.cnt1StepValue; if (step == 0) step = 1; step = step < 0?(100000000 + step):step; //务必对负数的值小心处理 sysPara->para.calandar_and_dat.cnt1Step = QString::number(step).toUInt(0,16); sysPara->para.calandar_and_dat.cnt2InitValue = QString::number(sysPara->para.cnt2StartValue).toUInt(0,16); sysPara->para.calandar_and_dat.cnt2End = QString::number(sysPara->para.cnt2EndValue).toUInt(0,16); sysPara->para.calandar_and_dat.cnt2Repeat = sysPara->para.cnt2RepeateValue; sysPara->para.calandar_and_dat.cnt2CurrValue = QString::number(sysPara->para.cnt2CurrValue).toUInt(0,16); step = sysPara->para.cnt2StepValue; if (step == 0) step = 1; step = step < 0?(100000000 + step):step; sysPara->para.calandar_and_dat.cnt2Step = QString::number(step).toUInt(0,16); sysPara->status.cnt3CurrentValueInitDoneFlag = true; sysPara->status.cnt2CurrentValueInitDoneFlag = true; sysPara->status.cnt1CurrentValueInitDoneFlag = true; // 与vx5相反,调换过值位置,比如0:4改为4:0 sysPara->para.calandar_and_dat.cntCurrValueInitEnable = (sysPara->status.cnt3CurrentValueInitDoneFlag?4:0)+ (sysPara->status.cnt2CurrentValueInitDoneFlag?2:0) + (sysPara->status.cnt1CurrentValueInitDoneFlag?1:0); fpgaWr(WRITE_CALENDAR_DAT_ADDR,(unsigned char *)&sysPara->para.calandar_and_dat,sizeof(sysPara->para.calandar_and_dat)); /*write counter3*/ sysPara->para.Counter3.cnt3CurrValue = QString::number(sysPara->para.cnt3CurrValue).toUInt(0,16); sysPara->para.Counter3.cnt3End = QString::number(sysPara->para.cnt3EndValue).toUInt(0,16); sysPara->para.Counter3.cnt3InitValue = QString::number(sysPara->para.cnt3StartValue).toUInt(0,16); sysPara->para.Counter3.cnt3Repeat = sysPara->para.cnt3RepeateValue; step = sysPara->para.cnt3StepValue; if (step == 0) step = 1; step = step < 0?(100000000 + step):step; sysPara->para.Counter3.cnt3Step = QString::number(step).toUInt(0,16); fpgaWr(WRITE_COUNTER3_ADDR,(unsigned char *)&sysPara->para.Counter3,sizeof(sysPara->para.Counter3)); sysPara->para.Counter4.cnt4CurrValue= QString::number(sysPara->para.cnt4CurrValue).toUInt(0,16); //计数器4当前值用于隐藏功能 fpgaWr(WRITE_COUNTER4_ADDR,(unsigned char *)&sysPara->para.Counter4,sizeof(sysPara->para.Counter4)); sysPara->status.cnt3CurrentValueInitDoneFlag = false; sysPara->status.cnt2CurrentValueInitDoneFlag = false; sysPara->status.cnt1CurrentValueInitDoneFlag = false; } unsigned char dataOfvariNum[1]; /** * @brief 原 dataOfreg_var_print_ctrl 定义 * dataOfreg_var_print_ctrl[8][8] * * 现在多了一个字节,是为了计数器添加支持非等宽字体时,存放对齐方向和字符间距所用 * @see reg_var_print_ctrl_t_v2 */ unsigned char dataOfreg_var_print_ctrl[8][12]; void DevOp::writeFpgaVariCtrl(void){ writeFpgaCalandar(0); dataOfvariNum[0]=sysPara->status.variNum; fpgaWr(VAR_CNT_ADDR,dataOfvariNum,1); /* 0xa450 变量个数 */ reg_var_print_ctrl_t reg_var_print_ctrl; for(int i = 0; i < sysPara->status.variNum; i++){ vars_t *p_var = &sysPara->status.vars[i]; if(p_var->original && p_var->dat){ fpgaWr(PRINT_DIGITAL_CHAR_BASE_ADDR + p_var->bassAddr,p_var->dat,p_var->datWidth *p_var->rowByteNum); } memset((char *)®_var_print_ctrl,0,sizeof(reg_var_print_ctrl)); reg_var_print_ctrl.charColNum = p_var->digitalNum?p_var->width/p_var->digitalNum:0; reg_var_print_ctrl.charRamBaseAddr = p_var->bassAddr; reg_var_print_ctrl.charRowNum = p_var->endRowPos - p_var->startRowPos; reg_var_print_ctrl.horizonWidth = p_var->width;//字模的宽度 reg_var_print_ctrl.colOffset = p_var->startColPos+BLANK_COL_NUM; reg_var_print_ctrl.verticalOffset = p_var->startRowPos; reg_var_print_ctrl.varDigitalNum = p_var->digitalNum; reg_var_print_ctrl.varTypeSel = Public::getType(p_var->type) %20; memcpy(dataOfreg_var_print_ctrl[i],(unsigned char *)®_var_print_ctrl,8); fpgaWr(VAR_CTRL_REG_ADDR,dataOfreg_var_print_ctrl[i],8); } } void DevOp::writeFpgaVariCtrlv2() { writeFpgaCalandar(0); dataOfvariNum[0]=sysPara->status.variNum; fpgaWr(VAR_CNT_ADDR,dataOfvariNum,1); /* 0xa450 变量个数 */ reg_var_print_ctrl_t_v2 reg_var_print_ctrl; for(int i = 0; i < sysPara->status.variNum; i++){ vars_t *p_var = &sysPara->status.vars[i]; if(p_var->original && p_var->dat){ fpgaWr(PRINT_DIGITAL_CHAR_BASE_ADDR + p_var->bassAddr,p_var->dat,p_var->datWidth *p_var->rowByteNum); fpgaWr(PRINT_DIGITAL_CHAR_WIDTH_TABLE_BASE_ADDR + i * 10, p_var->widthTable, sizeof(p_var->widthTable)); } memset((char *)®_var_print_ctrl,0,sizeof(reg_var_print_ctrl)); reg_var_print_ctrl.charColNum = *std::max_element(std::begin(p_var->widthTable), std::end(p_var->widthTable)); // 5 reg_var_print_ctrl.charRamBaseAddr = p_var->bassAddr; // 0 Examples reg_var_print_ctrl.charRowNum = p_var->height; // 7 reg_var_print_ctrl.horizonWidth = p_var->width; //字模的宽度 // 68 reg_var_print_ctrl.colOffset = p_var->startColPos+BLANK_COL_NUM; // 3 reg_var_print_ctrl.verticalOffset = p_var->startRowPos; // 0 reg_var_print_ctrl.varDigitalNum = p_var->digitalNum; // 8 reg_var_print_ctrl.varTypeSel = Public::getType(p_var->type) %20; // 7 reg_var_print_ctrl.enbVarWidthFont = 1; reg_var_print_ctrl.alignLeft = 1; reg_var_print_ctrl.charSpacing = p_var->letterSpace; // 4 memcpy(dataOfreg_var_print_ctrl[i],(unsigned char *)®_var_print_ctrl,9); fpgaWr(VAR_CTRL_REG_ADDR,dataOfreg_var_print_ctrl[i], 9); } } unsigned char dataOfCmd[1]; void DevOp::printCtrl(int cmd){ dataOfCmd[0]=cmd; fpgaWr(PRINT_START_STOP_CTRL,dataOfCmd,1); } void DevOp::printCtrl2(int cmd){ if(sysPara->para.SynCntEn) sysPara->para.SynCntEn1 = sysPara->para.SynCntEn; else { sysPara->para.SynCntEn1 = sysPara->status.isPrinting; } fpgaWr(PRINT_CTRL_ADDR_BASE+0x44,(unsigned char *)&sysPara->para.alterPrint,12); // Send AltePrit and cntNatureValue option 2017-7-18 fpgaWr(PRINT_CTRL_ADDR_BASE+0x68,(unsigned char *)&sysPara->para.stepPrint,sizeof(sysPara->para.stepPrint)); // Send StepPring 2017-7-18 cmd=1; } unsigned int DevOp::readFpgaVersionNum(){ fpgaRd(0x00EC,&sysPara->status.FPGAChipType,1); fpgaRd(0x00FE,(unsigned char *)&sysPara->status.fpgaVersionNum,2); fpgaRd(READ_BUILD_DAT, (unsigned char *)&sysPara->status.build_dat.builTime, sizeof(sysPara->status.build_dat.builTime)); return 0; } void DevOp::readbuilDat(void){ fpgaRd(READ_BUILD_DAT,(unsigned char *)&sysPara->status.build_dat,sizeof(sysPara->status.build_dat)); fpgaRd(FPGA_STATUS_BASE_ADDR + 0xed,(unsigned char *)&sysPara->status.build_dat.year,sizeof(sysPara->status.build_dat.year)); fpgaRd(FPGA_STATUS_BASE_ADDR + 0xee,(unsigned char *)&sysPara->status.build_dat.month,sizeof(sysPara->status.build_dat.month)); fpgaRd(FPGA_STATUS_BASE_ADDR + 0xef,(unsigned char *)&sysPara->status.build_dat.day,sizeof(sysPara->status.build_dat.day)); } void DevOp::readSTM32Version(void){ unsigned char stm32Verion[3]; stm32Rd(0xFA,(unsigned char *)&stm32Verion,3); } void DevOp::readSTM32Time(void){ static unsigned char stm32Time[8] = {}; stm32Rd(0xA1,(unsigned char *)&stm32Time,8); } void DevOp::readPrintDataXor(void){ fpgaRd(READ_PRINTDATA_XOR, (unsigned char *)&sysPara->status.xor_sync, 2); } void DevOp::readSyncCounterAtZero(void){ fpgaRd(READ_SYNC_COUNTER, (unsigned char *)&sysPara->status.xor_sync.sync_counter_at_zero, sizeof(sysPara->status.xor_sync.sync_counter_at_zero)); } unsigned char dataOfMode[1]; void DevOp::clearProductCnt(unsigned int mode){ dataOfMode[0]=mode; fpgaWr(PRINT_RESET_PRODUCT_CNT,dataOfMode,1); } unsigned char dataOfnum[1]; void DevOp::resumeFault(){ dataOfnum[0]=1; fpgaWr(RESUME_FAULT_ADDR,dataOfnum,1); } unsigned char dataOfhighVoltage[1]; void DevOp::highVoltageCtrl(int val){ dataOfhighVoltage[0]=val; stm32Wr(0x20,dataOfhighVoltage,1); if(val == 0){ highVoltageOpenFlag = false; }else{ highVoltageOpenFlag = true; } LogInfo::setRunStatusText("highVoltageCtrl: " + QString::number(val) + ", highVoltageOpenFlag: " + QString::number(highVoltageOpenFlag)); } unsigned char dataOfmaxHighVoltageDAC[2]; void DevOp::maxHighVoltageDACCtrl(int val){ dataOfmaxHighVoltageDAC[0]=val; dataOfmaxHighVoltageDAC[1]=val>>8; sysPara->status.waitHightVolOn =0; fpgaWr(PRINT_CTRL_ADDR_BASE + (unsigned int)(&sysPara->para.maxHighVoltageDAC) - (unsigned int)(&sysPara->para),dataOfmaxHighVoltageDAC,2); } unsigned char dataOfsetPhaseByHand[1]; void DevOp::setPhaseByHand(int val){ dataOfsetPhaseByHand[0]=val; sysPara->para.phaseByHand = val; fpgaWr(PRINT_CTRL_ADDR_BASE + (unsigned int)(&sysPara->para.phaseByHand) - (unsigned int)(&sysPara->para),dataOfsetPhaseByHand,1); } void DevOp::readPhaseDetectHighTm(void){ fpgaRd(PHASE_DETECT_HIGH_VOLTAGE_TM,(unsigned char *)&sysPara->status.phaseDetectHighTm,sizeof(sysPara->status.phaseDetectHighTm)); } unsigned char dataOfPhaseDetectVoltageDutyCycle[2]; void DevOp::setPhaseDetectVoltageDutyCycle(int duty){ unsigned value = (duty * sysPara->para.divideRatio * 2) / 100; dataOfPhaseDetectVoltageDutyCycle[0]=value; dataOfPhaseDetectVoltageDutyCycle[1]=value>>8; fpgaWr(PRINT_CTRL_ADDR_BASE + (unsigned int)(&sysPara->para.phase_detect_high_cnt) - (unsigned int)(&sysPara->para),dataOfPhaseDetectVoltageDutyCycle,2); } unsigned char dataOfBlickLightPeriod[2]; void DevOp::setBlickLightPeriod(int value){ dataOfBlickLightPeriod[0]=value; dataOfBlickLightPeriod[1]=value>>8; fpgaWr(PRINT_CTRL_ADDR_BASE + (unsigned int)(&sysPara->para.blinkLightPeriod) - (unsigned int)(&sysPara->para),dataOfBlickLightPeriod,2); } void DevOp::setOscillatorVoltage(int value){ if(value<100) fpgaWr(PRINT_CTRL_ADDR_BASE + (unsigned int)(&sysPara->para.oscillatorVoltage) - (unsigned int)(&sysPara->para),(unsigned char*)&OscillatorVoltage[value],1); } void DevOp::setDivideRatio(int value){ fpgaWr(PRINT_CTRL_ADDR_BASE + (unsigned int)(&sysPara->para.divideRatio) - (unsigned int)(&sysPara->para),(unsigned char*)&sysPara->para.divideRatio,2); } unsigned char dataOfLastLineEndPointFixedValue[2]; void DevOp::setLastLineEndPointFixedValue(int value){ value=value*MAX_FPGA_DAC_VALUE/1000; dataOfLastLineEndPointFixedValue[0]=value; dataOfLastLineEndPointFixedValue[1]=value>>8; fpgaWr(PRINT_CTRL_ADDR_BASE + (unsigned int)(&sysPara->para.lastLineEndPointFixedDACValue) - (unsigned int)(&sysPara->para),dataOfLastLineEndPointFixedValue,2); } unsigned char dataOfmainInkCtrl[1]; void DevOp::mainInkCtrl() { dataOfmainInkCtrl[0]=(isReleaseValveOpen()?(1<<3):0)+(isMainInkPumpOpen()?(1<<2):0) + (sysPara->status.selfCheckDone?(1<<1):0) + (sysPara->status.isPumpValveControledByHand?1:0); // fpgaWr(MAININKCTRL_ADDR,dataOfmainInkCtrl,1); } void DevOp::pumpValveCtrl(int viscosityAdjustByTemp)//20140423 OK { char buf[20]; int i=0; int viscostyRealValue, tempOffset; static int hadGetIndoorTemperature=0; memset(buf,0,sizeof(buf)); buf[i++]=(isReleaseValveOpen()?(1<<3):0) +(isMainInkPumpOpen()?(1<<2):0) + (sysPara->status.selfCheckDone?(1<<1):0) + (sysPara->status.isPumpValveControledByHand?1:0); if(!sysPara->para.gearPumpEnable) { buf[i++] = (sysPara->para.pressure/5)&0xff; buf[i++] = ((sysPara->para.pressure/5)>>8)&0xff; } else { buf[i++] = (sysPara->para.pressure)&0xff; buf[i++] = (sysPara->para.pressure>>8)&0xff; } buf[i++]=(sysPara->para.viscosityPumpInterval*100)&0xff; buf[i++]=((sysPara->para.viscosityPumpInterval*100)>>8)&0xff; if(!hadGetIndoorTemperature) { hadGetIndoorTemperature = viscosityAdjustByTemp; } if(!hadGetIndoorTemperature) { buf[i++]=(sysPara->para.viscosity)&0xff; buf[i++]=((sysPara->para.viscosity)>>8)&0xff; } else { tempOffset = sysPara->status.indoorTemperature-35; if(tempOffset>5)//超过40度就按照40度计算 { tempOffset = 5; } if(tempOffset>0) { if(sysPara->para.viscosityAdjust==1)//0.6% { viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(tempOffset*3)/500; } else if(sysPara->para.viscosityAdjust==2)//1.0% { viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*tempOffset/100; } else if(sysPara->para.viscosityAdjust==3)//1.6% { viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*tempOffset*8/500; } else if(sysPara->para.viscosityAdjust==3)//2.0% { viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*tempOffset*2/100; } else { viscostyRealValue = sysPara->para.viscosity; } } else { viscostyRealValue = sysPara->para.viscosity; } buf[i++]=viscostyRealValue&0xff; buf[i++]=(viscostyRealValue>>8)&0xff; } buf[i++]=(sysPara->para.reclaimPumpPWMWidth)&0xff; buf[i++]=((sysPara->para.temperature))&0xff; buf[i++]=(sysPara->devOp->isReclaimPumpOpen()?(1<<0):0) | (sysPara->devOp->isCompressPumpOpen()?(1<<1):0) | (sysPara->devOp->isViscosityPumpOpen()?(1<<2):0) | (sysPara->devOp->isCycleValveOpen()?(1<<3):0) | (sysPara->devOp->isInkValveOpen()?(1<<4):0) | (sysPara->devOp->isMixValveOpen()?(1<<5):0); // fpgaWr(MAININKCTRL_ADDR,(unsigned char *)buf,i);// //20140423 5A,5B } void DevOp::showData( QByteArray dat) { int i,len; QString s=""; len = dat.length(); for(i=0;istatus.RandomNum>0) { if(sysPara->status.RandomNum>32){ return; } len = sysPara->status.RandomNum*8; if(len>256)return; fpgaRd(READ_RAND_FIFO_ADDR ,(unsigned char *)buf,len); ss=""; n=0; for(i=0;istatus.RandomDigitNum) //12 ; //0,1,2,3 4,5,6,7,8,9 0 1,2,3,4,5 else if( k >= 16-sysPara->status.RandomDigitNum) { if(c==0) str.append( ((buf[i]>>4)& 0x0f)|0x30); else if(c==1) str.append((buf[i]& 0x0f)|0x30); if(k==15) { str.append(" "); } } else ; n++; } } QFile f1("/home/plg/Xrand2.txt"); f1.open(QFile::ReadWrite); f1.seek(f1.size()); f1.write(str); len = f1.size(); f1.close(); if(len>3500000) { sysPara->status.RandomBackCnt=10; ss= "mv /home/plg/Xrand2.txt /home/plg/rand" + QDateTime::currentDateTime().toString("yyMMddhhmmss")+".txt"; system(ss.toLatin1()); return; } } } void DevOp::RandTxtBakup(char ok) // ok 0:不一定备份,1直接备份 { QFile f1("/home/plg/Xrand2.txt"); QString str; str= "mv /home/plg/Xrand2.txt /udisk/rand" + QDateTime::currentDateTime().toString("yyMMddhhmmss")+".txt"; if(sysPara->status.RandomBackCnt>5){ system(str.toLatin1()); system("mv /home/plg/rand*.txt /udisk/"); sysPara->status.RandomBackCnt=0; } else { //f1.open(QFile::ReadWrite); int len= f1.size(); //f1.close(); if(len>3500000 || ok ) { system(str.toLatin1()); system("mv /home/plg/rand*.txt /udisk/"); } } } void DevOp::writeDacValue2Fpga_No72NewVoltData(){ // LogInfo::setRunStatusText("writeDacValue2Fpga_No72NewVoltData"); fpgaWr(0xA600, (unsigned char *)(sysPara->voltePara_25Dots.matchTotalTableDACArray1), (128)); fpgaWr(0xA680, (unsigned char *)(sysPara->voltePara_25Dots.matchTotalTableDACArray2[0]), (64 * 2*2)); fpgaWr(0xA780, (unsigned char *)(sysPara->voltePara_25Dots.matchTotalTableDACArray3[0]), (64 * 3*2)); fpgaWr(0xA900, (unsigned char *)(sysPara->voltePara_25Dots.matchTotalTableDACArray4[0]), (64 * 4*2)); fpgaWr(0xAB00, (unsigned char *)(sysPara->voltePara_25Dots.matchTotalTableDACArray5[0]), (64 * 5*2)); fpgaWr(0xB380, (unsigned char *)(sysPara->voltePara_25Dots.matchContinousDACArray), (64 * 2)); fpgaWr(0xBC00, (unsigned char *)(sysPara->voltePara_25Dots.matchTotalDiffVoltageValue[0]), (64 * 50)); fpgaWr(0xB400, (unsigned char *)(sysPara->voltePara_25Dots.matchExtraLineDACArray), (64)); fpgaWr(0xB440, (unsigned char *)(sysPara->voltePara_25Dots.matchFirstOnePointExtraLineDACArray), (64)); fpgaWr(0xD200, (unsigned char *)(sysPara->voltePara_25Dots.matchAdjustParaDACArray), (8)); //超10个空点巨点补偿 fpgaWr(0xCD00, (unsigned char *)(sysPara->voltePara_25Dots.matchGiantPointVoltageValue[0]), (64*16)); fpgaWr(0xB280, (unsigned char *)(sysPara->voltePara_25Dots.matchTotalTableDACArrayFirst1), (64*2)); //一列第一个点是单点 } unsigned char dataofHighVoltageAmplitude[1]; void DevOp::setHighVoltageAmplitudetoSTM32(){ dataofHighVoltageAmplitude[0]=sysPara->para.HighVoltageAmplitude; emit sendSerialDataToSTM32(2,0x1f,dataofHighVoltageAmplitude,1,2); } void DevOp::resendFPGADate(int cmd, int addr, unsigned char *dat, int len, int type){ emit sendSerialDataToFPGA(cmd,addr,dat,len,type); } extern "C" { #pragma pack(1) typedef struct FlightComCtrl_t_ { uint8_t flags; // bit0: 启用飞行补偿控制, bit1: 启用加减速预测 uint32_t flightCompWindow; }FlightComCtrl_t; #pragma pack() } static FlightComCtrl_t flightComCtrl; void DevOp::writeFlightCompCtrl(bool enb, bool enbAccelDecelPredict, quint32 flightCompWindow) { memset(&flightComCtrl, 0, sizeof(FlightComCtrl_t)); flightComCtrl.flags |= (enb ? 1 : 0); flightComCtrl.flags |= (enbAccelDecelPredict ? 0x2 : 0x0); flightComCtrl.flightCompWindow = flightCompWindow; writeFlightCompCtrl(); } void DevOp::writeFlightCompCtrl() { fpgaWr(FLIGHT_COMP_CTRL_BASE, (unsigned char*)(&flightComCtrl), sizeof(FlightComCtrl_t)); } void DevOp::writeSyncAndDelayPrintCount(bool enb, uint32_t maxCount) { static uint8_t buffer[5] = {0}; buffer[0] = enb ? 1 : 0; buffer[1] = maxCount & 0xFF; buffer[2] = (maxCount >> 8) & 0xFF; buffer[3] = (maxCount >> 16) & 0xFF; buffer[4] = (maxCount >> 24) & 0xFF; fpgaWr(MAX_REPEAT_COUNT_DELAY_SYNC, buffer, sizeof(buffer)); } void DevOp::resendSTM32Date(int cmd, int addr, unsigned char *dat, int len, int type) { emit sendSerialDataToSTM32(cmd,addr,dat,len,type); } void DevOp::DACValueWithVoltageAdj(){ memset(DACArray,0,sizeof(DACArray)); memset(notGapDACArray,0,sizeof(notGapDACArray)); memset(fullColDACArray,0,sizeof(fullColDACArray)); int nCurrPrintRow = sysPara->status.currPrintRow; #define DAC_RADIO (nCurrPrintRow > 1 ? (13.05*(100-((100-sysPara->para.dacScale)/((nCurrPrintRow-1)>0?(nCurrPrintRow-1):1)*i))/100) : 13.05) if (sysPara->status.currPrintRow <= 5) { for(int i = 0; i < sysPara->status.currPrintRow; i++) { if (sysPara->para.oscillatoFreq == 0) { // 64K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_64k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_64k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_64k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_64k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_64k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_64k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_64k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_64k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_64k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.oscillatoFreq == 2) { // 96 if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_96k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_96k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_96k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.recommendedPrintSpeed == 1){ adj_dac_temp = fast_96k_5dot_adj_default_dac_H[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_96k_5dot_continue_default_dac_H[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_96k_5dot_full_default_dac_H[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } if(!sysPara->para.Vol1of8En && sysPara->para.FullColFixVal){ full_dac_temp = fast_96k_5dot_full_default_dac_F[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_96k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.recommendedPrintSpeed == 1){ adj_dac_temp = normal_96k_5dot_adj_default_dac_H[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = normal_96k_5dot_continue_default_dac_H[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = normal_96k_5dot_full_default_dac_H[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } if(!sysPara->para.Vol1of8En && sysPara->para.FullColFixVal){ full_dac_temp = normal_96k_5dot_full_default_dac_F[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_96k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } } else if (sysPara->para.oscillatoFreq == 3) { // 128k if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_128k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_128k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_128k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.recommendedPrintSpeed == 1){ adj_dac_temp = fast_128k_5dot_adj_default_dac_A[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_128k_5dot_continue_default_dac_A[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_128k_5dot_full_default_dac_A[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if(sysPara->para.recommendedPrintSpeed == 2){ adj_dac_temp = fast_128k_5dot_adj_default_dac_B[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_128k_5dot_continue_default_dac_B[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_128k_5dot_full_default_dac_B[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_128k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_128k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_128k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } } } else if (sysPara->status.currPrintRow <= 7) { for(int i = 0; i < sysPara->status.currPrintRow; i++) { if (sysPara->para.oscillatoFreq == 0) { // 64K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_64k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_64k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_64k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_64k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_64k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_64k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_64k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_64k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_64k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.oscillatoFreq == 2) { // 96K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_96k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_96k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_96k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.recommendedPrintSpeed == 1){ adj_dac_temp = fast_96k_7dot_adj_default_dac_H[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_96k_7dot_continue_default_dac_H[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_96k_7dot_full_default_dac_H[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } if(sysPara->para.recommendedPrintSpeed == 2){ adj_dac_temp = fast_96k_7dot_adj_default_dac_S[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_96k_7dot_continue_default_dac_S[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_96k_7dot_full_default_dac_S[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } if(!sysPara->para.Vol1of8En && sysPara->para.FullColFixVal){ full_dac_temp = fast_96k_7dot_full_default_dac_F[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_96k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.recommendedPrintSpeed == 1){ adj_dac_temp = normal_96k_7dot_adj_default_dac_H[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = normal_96k_7dot_continue_default_dac_H[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = normal_96k_7dot_full_default_dac_H[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } if(!sysPara->para.Vol1of8En && sysPara->para.FullColFixVal){ full_dac_temp = normal_96k_7dot_full_default_dac_F[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_96k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } } else if (sysPara->para.oscillatoFreq == 3) { // 128K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_128k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_128k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_128k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.recommendedPrintSpeed == 2){ adj_dac_temp = fast_128k_7dot_adj_default_dac_A[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_128k_7dot_continue_default_dac_A[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_128k_7dot_full_default_dac_A[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if(sysPara->para.recommendedPrintSpeed == 1){ adj_dac_temp = fast_128k_7dot_adj_default_dac_B[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_128k_7dot_continue_default_dac_B[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_128k_7dot_full_default_dac_B[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if(sysPara->para.recommendedPrintSpeed == 3){ adj_dac_temp = fast_128k_7dot_adj_default_dac_C[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_128k_7dot_continue_default_dac_C[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_128k_7dot_full_default_dac_C[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 25; sysPara->voltePara.pixel_para_table[4] = 10; } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_128k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_128k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_128k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } } } } else if (sysPara->status.currPrintRow <= 9) { for(int i = 0; i < sysPara->status.currPrintRow; i++) { if (sysPara->para.oscillatoFreq == 0) { // 64K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_64k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_64k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_64k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_64k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_64k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_64k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_64k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_64k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_64k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.oscillatoFreq == 2) { // 96K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_96k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_96k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_96k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.recommendedPrintSpeed == 1){ adj_dac_temp = fast_96k_9dot_adj_default_dac_S[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_96k_9dot_continue_default_dac_S[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_96k_9dot_full_default_dac_S[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 25; sysPara->voltePara.pixel_para_table[5] = 15; } } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_96k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.recommendedPrintSpeed == 1){ adj_dac_temp = normal_96k_9dot_adj_default_dac_H[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = normal_96k_9dot_continue_default_dac_H[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = normal_96k_9dot_full_default_dac_H[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_96k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } if (sysPara->para.oscillatoFreq == 3) { // 128K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_128k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_128k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_128k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.recommendedPrintSpeed == 1){ adj_dac_temp = fast_128k_9dot_adj_default_dac_A[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_128k_9dot_continue_default_dac_A[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_128k_9dot_full_default_dac_A[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if(sysPara->para.recommendedPrintSpeed == 2){ adj_dac_temp = fast_128k_9dot_adj_default_dac_B[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_128k_9dot_continue_default_dac_B[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_128k_9dot_full_default_dac_B[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if(sysPara->para.recommendedPrintSpeed == 3){ adj_dac_temp = fast_128k_9dot_adj_default_dac_C[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_128k_9dot_continue_default_dac_C[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_128k_9dot_full_default_dac_C[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 25; sysPara->voltePara.pixel_para_table[4] = 10; } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_128k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_128k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_128k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } } } } else if (sysPara->status.currPrintRow <= 12) { for(int i = 0; i < sysPara->status.currPrintRow; i++) { if (sysPara->para.oscillatoFreq == 0) { // 64K if ((sysPara->para.printRowDelay == 0) && (i < 5)) {//交替 float adj_dac_temp = fast_64k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_64k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_64k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_64k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_64k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_64k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.alterPrint.enable){ adj_dac_temp = normal_64k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = normal_64k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = normal_64k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_64k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_64k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_64k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.alterPrint.enable){ adj_dac_temp = slow1_64k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = slow1_64k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = slow1_64k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } } else if (sysPara->para.oscillatoFreq == 2) { // 96K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_96k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_96k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_96k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.upDownInverse){ adj_dac_temp = fast_96k_12dot_adj_default_dac_U[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_96k_12dot_continue_default_dac_U[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_96k_12dot_full_default_dac_U[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } sysPara->voltePara.pixel_para_table[0] = 30; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 25; if((i < 5) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = fast_96k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_96k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_96k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_96k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if((i < 5) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = normal_96k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_96k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if((i < 5) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = slow1_96k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } } else if(sysPara->para.oscillatoFreq == 3){// 128K if( (i < 5) && sysPara->para.alterPrint.enable) {//交替 if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_128k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_128k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_128k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_128k_5dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_128k_5dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_128k_5dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } } } } else if (sysPara->status.currPrintRow <= 16) { for(int i = 0; i < sysPara->status.currPrintRow; i++) { if (sysPara->para.oscillatoFreq == 0) { // 64K if (sysPara->para.printRowDelay == 0){ if((i < 7) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = fast_64k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_64k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_64k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_64k_16dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_64k_16dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_64k_16dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 20; sysPara->voltePara.pixel_para_table[1] = 20; sysPara->voltePara.pixel_para_table[2] = 30; sysPara->voltePara.pixel_para_table[3] = 30; sysPara->voltePara.pixel_para_table[4] = 10; if((i < 7) && sysPara->para.alterPrint.enable){ adj_dac_temp = normal_64k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = normal_64k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = normal_64k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_64k_16dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_64k_16dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_64k_16dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if((i < 7) && sysPara->para.alterPrint.enable){ adj_dac_temp = slow1_64k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = slow1_64k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = slow1_64k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } } else if (sysPara->para.oscillatoFreq == 2) { // 96K if (sysPara->para.printRowDelay == 0){ if((i < 7) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = fast_96k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_96k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_96k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 1){ float adj_dac_temp = normal_96k_16dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_16dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_16dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if((i < 7) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = normal_96k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_96k_16dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_16dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_16dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if((i < 7) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = slow1_96k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } } else if ((sysPara->para.oscillatoFreq == 3) && (i < 7) && sysPara->para.alterPrint.enable) { // 128K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_128k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_128k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_128k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_128k_7dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_128k_7dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_128k_7dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } } } } else if (sysPara->status.currPrintRow <= 24) { for(int i = 0; i < sysPara->status.currPrintRow; i++) { if (sysPara->para.oscillatoFreq == 0) { // 64K if (sysPara->para.printRowDelay == 0){ if((i < 9) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = fast_64k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_64k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_64k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_64k_24dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_64k_24dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_64k_24dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if((i < 9) && sysPara->para.alterPrint.enable){ adj_dac_temp = normal_64k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = normal_64k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = normal_64k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 2) { float adj_dac_temp = slow1_64k_24dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_64k_24dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_64k_24dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if((i < 9) && sysPara->para.alterPrint.enable){ adj_dac_temp = slow1_64k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = slow1_64k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = slow1_64k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } } else if (sysPara->para.oscillatoFreq == 2) { // 96K if (sysPara->para.printRowDelay == 0){ if((i < 9) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = fast_96k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_96k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_96k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 1){ if((i < 9) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = normal_96k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.printRowDelay == 2){ float adj_dac_temp = slow1_96k_24dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_24dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_24dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if((i < 9) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = slow1_96k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } } else if ((sysPara->para.oscillatoFreq == 3) && (i < 9) && sysPara->para.alterPrint.enable) { // 128K if (sysPara->para.printRowDelay == 0) { float adj_dac_temp = fast_128k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_128k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_128k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } else if (sysPara->para.printRowDelay == 1) { float adj_dac_temp = normal_128k_9dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_128k_9dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_128k_9dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; sysPara->voltePara.pixel_para_table[0] = 15; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 10; } } } } else if (sysPara->status.currPrintRow <= 32) { for(int i = 0; i < sysPara->status.currPrintRow; i++){ if (sysPara->para.oscillatoFreq == 0) { if((sysPara->para.printRowDelay == 1) && (sysPara->para.alterPrint.enable)){ float adj_dac_temp = normal_64k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_64k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_64k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if((sysPara->para.printRowDelay == 2) && (sysPara->para.alterPrint.enable)){ float adj_dac_temp = slow1_64k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_64k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_64k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.oscillatoFreq == 2) { if ((sysPara->para.printRowDelay == 0) && (i <= 12) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = fast_96k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = fast_96k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = fast_96k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; if(sysPara->para.upDownInverse){ adj_dac_temp = fast_96k_12dot_adj_default_dac_U[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; continue_dac_temp = fast_96k_12dot_continue_default_dac_U[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; full_dac_temp = fast_96k_12dot_full_default_dac_U[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if ((sysPara->para.printRowDelay == 1) && (i <= 12) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = normal_96k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if ((sysPara->para.printRowDelay == 2) && (i <= 12) && sysPara->para.alterPrint.enable) {//交替 float adj_dac_temp = slow1_96k_12dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_12dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } sysPara->voltePara.pixel_para_table[0] = 30; sysPara->voltePara.pixel_para_table[1] = 15; sysPara->voltePara.pixel_para_table[2] = 15; sysPara->voltePara.pixel_para_table[3] = 15; sysPara->voltePara.pixel_para_table[4] = 25; } } } else{ for(int i = 0; i < sysPara->status.currPrintRow; i++){ if (sysPara->para.oscillatoFreq == 0) { if((sysPara->para.printRowDelay == 1) && (sysPara->para.alterPrint.enable)){ float adj_dac_temp = normal_64k_16dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_64k_16dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_64k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if((sysPara->para.printRowDelay == 2) && (sysPara->para.alterPrint.enable)){ float adj_dac_temp = slow1_64k_16dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_64k_16dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_64k_16dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } else if (sysPara->para.oscillatoFreq == 2) { if((sysPara->para.printRowDelay == 1) && (sysPara->para.alterPrint.enable)){ float adj_dac_temp = normal_96k_16dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = normal_96k_16dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = normal_96k_12dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } else if((sysPara->para.printRowDelay == 2) && (sysPara->para.alterPrint.enable)){ float adj_dac_temp = slow1_96k_16dot_adj_default_dac[i] * DAC_RADIO; DACArray[i] = adj_dac_temp; float continue_dac_temp = slow1_96k_16dot_continue_default_dac[i] * DAC_RADIO; notGapDACArray[i] = continue_dac_temp; float full_dac_temp = slow1_96k_16dot_full_default_dac[i] * DAC_RADIO; fullColDACArray[i] = full_dac_temp; } } } } } static unsigned short * voltArray = NULL; static unsigned short highspeedmode_7dot_dac[1152]; //128*9=1152 static unsigned short highspeedmode_9dot_dac[4608]; //512*9 = 4608 void DevOp::writeDataToFpga_No67HighSpeedMode(Voltage_Version version,bool flag){ // LogInfo::setRunStatusText("writeDataToFpga_No67HighSpeedMode"); memset(highspeedmode_7dot_dac, 0, sizeof(highspeedmode_7dot_dac)); memset(highspeedmode_9dot_dac, 0, sizeof(highspeedmode_9dot_dac)); QString volParaFilePath; if(version == VersionOf67And7HighSpeed){ volParaFilePath = ":/conf/normal_128k_7dot_dac.txt"; } else if(version == VersionOf67And7SuperSpeed){ volParaFilePath = ":/conf/fast_128k_7dot_dac.txt"; } else if(version == VersionOf67And9HighSpeed){ volParaFilePath = ":/conf/normal_128k_9dot_dac.txt"; } else if(version == VersionOf67And9SuperSpeed){ volParaFilePath = ":/conf/normal_128k_9dot_dac.txt"; } int max_size = 0; if(sysPara->status.currPrintRow <= 7){ voltArray = (unsigned short *)highspeedmode_7dot_dac; max_size = 1152; }else if(sysPara->status.currPrintRow <= 9){ voltArray = (unsigned short *)highspeedmode_9dot_dac; max_size = 4608; } QFile file(volParaFilePath); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "open failed normal_128k_7dot_dac.txt!"; return; } QTextStream in(&file); int i = 0; while (!in.atEnd()) { QString str = in.readLine(); QStringList list = str.split(","); // 确保文件中的分隔符是逗号 for (int j = 0; j < 9 && j < list.size(); j++) { if (!list[j].isEmpty() && (voltArray != NULL) && istatus.currPrintRow <= 7){ if(flag) fpgaWr(0xB500,(unsigned char *)voltArray,2304); //128*9=1152 1152*2 = 2304 else fpgaWr(0xB200,(unsigned char *)voltArray,2304); } else if(sysPara->status.currPrintRow <= 9){ if(flag) fpgaWr(0xB500,(unsigned char *)voltArray,9216); //512*9 = 4608 4608*2=9216 else fpgaWr(0xB200,(unsigned char *)voltArray,9216); } }