按下按键开始检测,批检仪测试脚本

This commit is contained in:
ranchuan
2023-06-26 18:07:08 +08:00
parent cfda1c461b
commit a1a9b53780
13 changed files with 963 additions and 178 deletions

1
.gitignore vendored
View File

@@ -10,5 +10,6 @@ __pycache__/
*.pid
*.pkt
*.spec
*.csv
python/build/
python/dist/

View File

@@ -120,7 +120,7 @@
<SetRegEntry>
<Number>0</Number>
<Key>DLGUARM</Key>
<Name>d</Name>
<Name>7</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
@@ -1044,6 +1044,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\source\interface\if_gpioin.c</PathWithFileName>
<FilenameWithoutPath>if_gpioin.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@@ -1054,7 +1066,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>47</FileNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1066,7 +1078,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>48</FileNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1078,7 +1090,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>49</FileNumber>
<FileNumber>50</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1098,7 +1110,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>50</FileNumber>
<FileNumber>51</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1110,7 +1122,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>51</FileNumber>
<FileNumber>52</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1130,7 +1142,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>52</FileNumber>
<FileNumber>53</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1142,7 +1154,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>53</FileNumber>
<FileNumber>54</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1154,7 +1166,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>54</FileNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1166,7 +1178,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>55</FileNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1178,7 +1190,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>56</FileNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1190,7 +1202,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>57</FileNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1202,7 +1214,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>58</FileNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1214,7 +1226,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>59</FileNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1226,7 +1238,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>60</FileNumber>
<FileNumber>61</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1238,7 +1250,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>61</FileNumber>
<FileNumber>62</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1250,7 +1262,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>62</FileNumber>
<FileNumber>63</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1262,7 +1274,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>63</FileNumber>
<FileNumber>64</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1274,7 +1286,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>64</FileNumber>
<FileNumber>65</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1286,7 +1298,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>65</FileNumber>
<FileNumber>66</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1298,7 +1310,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>66</FileNumber>
<FileNumber>67</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1310,7 +1322,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>67</FileNumber>
<FileNumber>68</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1322,7 +1334,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>68</FileNumber>
<FileNumber>69</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1334,7 +1346,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>69</FileNumber>
<FileNumber>70</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1346,7 +1358,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>70</FileNumber>
<FileNumber>71</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1366,7 +1378,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>71</FileNumber>
<FileNumber>72</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1378,7 +1390,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>72</FileNumber>
<FileNumber>73</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1390,7 +1402,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>73</FileNumber>
<FileNumber>74</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1402,7 +1414,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>74</FileNumber>
<FileNumber>75</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1422,7 +1434,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>75</FileNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1434,7 +1446,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>76</FileNumber>
<FileNumber>77</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1446,7 +1458,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>77</FileNumber>
<FileNumber>78</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1458,7 +1470,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>78</FileNumber>
<FileNumber>79</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1470,7 +1482,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>79</FileNumber>
<FileNumber>80</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1482,7 +1494,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>80</FileNumber>
<FileNumber>81</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1494,7 +1506,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>81</FileNumber>
<FileNumber>82</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1506,7 +1518,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>82</FileNumber>
<FileNumber>83</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1518,7 +1530,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>83</FileNumber>
<FileNumber>84</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1530,7 +1542,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>84</FileNumber>
<FileNumber>85</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1542,7 +1554,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>85</FileNumber>
<FileNumber>86</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1554,7 +1566,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>86</FileNumber>
<FileNumber>87</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1566,7 +1578,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>87</FileNumber>
<FileNumber>88</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1578,7 +1590,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>88</FileNumber>
<FileNumber>89</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1590,7 +1602,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>89</FileNumber>
<FileNumber>90</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1602,7 +1614,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>90</FileNumber>
<FileNumber>91</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1614,7 +1626,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>91</FileNumber>
<FileNumber>92</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1626,7 +1638,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>92</FileNumber>
<FileNumber>93</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1638,7 +1650,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>93</FileNumber>
<FileNumber>94</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1650,7 +1662,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>94</FileNumber>
<FileNumber>95</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1662,7 +1674,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>95</FileNumber>
<FileNumber>96</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1674,7 +1686,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>96</FileNumber>
<FileNumber>97</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1686,7 +1698,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>97</FileNumber>
<FileNumber>98</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1698,7 +1710,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>98</FileNumber>
<FileNumber>99</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1710,7 +1722,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>99</FileNumber>
<FileNumber>100</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1722,7 +1734,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>100</FileNumber>
<FileNumber>101</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1734,7 +1746,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>101</FileNumber>
<FileNumber>102</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1746,7 +1758,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>102</FileNumber>
<FileNumber>103</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1758,7 +1770,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>103</FileNumber>
<FileNumber>104</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1770,7 +1782,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>104</FileNumber>
<FileNumber>105</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1782,7 +1794,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>105</FileNumber>
<FileNumber>106</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1794,7 +1806,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>106</FileNumber>
<FileNumber>107</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1806,7 +1818,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>107</FileNumber>
<FileNumber>108</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1818,7 +1830,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>108</FileNumber>
<FileNumber>109</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1830,7 +1842,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>109</FileNumber>
<FileNumber>110</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1850,7 +1862,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>110</FileNumber>
<FileNumber>111</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1862,7 +1874,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>111</FileNumber>
<FileNumber>112</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1874,7 +1886,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>112</FileNumber>
<FileNumber>113</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1886,7 +1898,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>113</FileNumber>
<FileNumber>114</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1898,7 +1910,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>114</FileNumber>
<FileNumber>115</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1910,7 +1922,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>115</FileNumber>
<FileNumber>116</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1922,7 +1934,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>116</FileNumber>
<FileNumber>117</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1934,7 +1946,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>117</FileNumber>
<FileNumber>118</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1946,7 +1958,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>118</FileNumber>
<FileNumber>119</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1958,7 +1970,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>119</FileNumber>
<FileNumber>120</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1970,7 +1982,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>120</FileNumber>
<FileNumber>121</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1990,7 +2002,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>121</FileNumber>
<FileNumber>122</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2002,7 +2014,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>122</FileNumber>
<FileNumber>123</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2014,7 +2026,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>123</FileNumber>
<FileNumber>124</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2026,7 +2038,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>124</FileNumber>
<FileNumber>125</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2038,7 +2050,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>125</FileNumber>
<FileNumber>126</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2050,7 +2062,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>126</FileNumber>
<FileNumber>127</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2062,7 +2074,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>127</FileNumber>
<FileNumber>128</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2074,7 +2086,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>128</FileNumber>
<FileNumber>129</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2086,7 +2098,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>129</FileNumber>
<FileNumber>130</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2098,7 +2110,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>130</FileNumber>
<FileNumber>131</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2110,7 +2122,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>131</FileNumber>
<FileNumber>132</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2122,7 +2134,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>132</FileNumber>
<FileNumber>133</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2134,7 +2146,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>133</FileNumber>
<FileNumber>134</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2146,7 +2158,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>134</FileNumber>
<FileNumber>135</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2158,7 +2170,7 @@
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>135</FileNumber>
<FileNumber>136</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2168,6 +2180,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>137</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\source\task\key.c</PathWithFileName>
<FilenameWithoutPath>key.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@@ -2178,7 +2202,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>136</FileNumber>
<FileNumber>138</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2198,7 +2222,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>13</GroupNumber>
<FileNumber>137</FileNumber>
<FileNumber>139</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2210,7 +2234,7 @@
</File>
<File>
<GroupNumber>13</GroupNumber>
<FileNumber>138</FileNumber>
<FileNumber>140</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2222,7 +2246,7 @@
</File>
<File>
<GroupNumber>13</GroupNumber>
<FileNumber>139</FileNumber>
<FileNumber>141</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -2242,7 +2266,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>14</GroupNumber>
<FileNumber>140</FileNumber>
<FileNumber>142</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>

View File

@@ -729,6 +729,11 @@
<FileType>1</FileType>
<FilePath>.\source\interface\if_uart_dma.c</FilePath>
</File>
<File>
<FileName>if_gpioin.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\interface\if_gpioin.c</FilePath>
</File>
</Files>
</Group>
<Group>
@@ -1311,6 +1316,11 @@
<FileType>1</FileType>
<FilePath>.\source\task\mod_signals.c</FilePath>
</File>
<File>
<FileName>key.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\task\key.c</FilePath>
</File>
</Files>
</Group>
<Group>
@@ -2129,6 +2139,11 @@
</FileArmAds>
</FileOption>
</File>
<File>
<FileName>if_gpioin.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\interface\if_gpioin.c</FilePath>
</File>
</Files>
</Group>
<Group>
@@ -4078,6 +4093,11 @@
<FileType>1</FileType>
<FilePath>.\source\task\mod_signals.c</FilePath>
</File>
<File>
<FileName>key.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\task\key.c</FilePath>
</File>
</Files>
</Group>
<Group>

35
python/checker_save.py Normal file
View File

@@ -0,0 +1,35 @@
class save:
def __init__(self) -> None:
pass
def save(self,data:bytearray):
d=data[1:]
for i in range(20):
self.save_item(d[i*28:i*28+28])
def save_item(self,d:bytearray):
s='=\"'+d[0:8].hex()+'\"'+','
s+='=\"'+self.hex2bit(d[8:10])+'\"'+','
s+=self.hex2int(d[10:])
print(d[8:10].hex(' '))
print(s)
with open("./file/save.csv","+a") as f:
f.write(s+'\n')
def hex2int(self,d:bytearray):
s=""
for i in range(len(d)//2):
s+=str(d[i*2]|(d[i*2+1]<<8))+','
return s
def hex2bit(self,d:bytearray):
s=""
for i in range(len(d)*8):
if(d[i//8]&(1<<(i%8))!=0):
s+='1'
else:
s+='0'
if((i>0) and ((i+1)%8==0) and ((i+1)<len(d)*8)):
s+='_'
return s

View File

@@ -3,6 +3,26 @@ import serial.tools.list_ports
import threading
import time
import socket
import checker_save
def crc16(data:bytearray,offset:int,len:int):
if(len>0):
crc=0xffff
for i in range(len-offset):
crc=(crc^data[i+offset])&0xffff
for j in range(8):
if(crc&1)!=0:
crc=((crc>>1)^0xa001)&0xffff
else:
crc=(crc>>1)&0xffff
return crc&0xff,(crc>>8)&0xff
return 0,0
# 把tcp封装为串口
class utcp:
@@ -27,7 +47,12 @@ class utcp:
class port:
def __init__(self) -> None:
pass
self.cmd=0
self.cmd_no=0
self.str_err=""
self.is_big_data=False
self.num_to_recv=0
self.recv_data=bytearray()
def open(self,name:str,bsp:int):
if(name!="utcp"):
self.ser = serial.Serial(port=name, baudrate=bsp,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,
@@ -37,89 +62,116 @@ class port:
def start_recv(self):
self.thread_ = threading.Thread(target=self.recv, args=())
self.thread_.start()
def recv(self,num:int):
def decode(self,data:bytearray):
self.str_err="ok"
if(len(data)<10):
print("recv data len too less.")
self.str_err="recv data len too less."
return bytearray()
if(data[0]!=0x59 or data[1]!=0x6d or data[2]!=0x43):
print("frame head not 0x59 0x6d.")
self.str_err="frame head not 0x59 0x6d."
return bytearray()
length=data[3]|(data[4]<<8)
if(length==65535):
# 重新设置数据长度
length=data[7]|(data[8]<<8)|(data[9]<<16)|(data[10]<<24);
self.is_big_data=True
else:
self.is_big_data=False
if(length+7!=len(data)):
print("recv data have lossed")
self.str_err="recv data have lossed"
return bytearray()
a,b=crc16(data,3,length+5)
if(a!=data[-2] or b!=data[-1]):
print("recv data check error.h_crc=%02x %02x,crc=%02x %02x",a,b,data[-2],data[-1])
self.str_err="recv data check error."
self.cmd_no=data[6]|(data[7]<<8)
self.cmd=data[5]
if(self.is_big_data==False):
return data[8:-2]
else:
return data[12:-2]
def recv(self):
data=bytearray()
while(True):
d=bytes()
try:
d=self.ser.read(num)
d=self.ser.read(1)
except Exception as a:
# print("err:",str(a))
print("port closed")
return
# print("recv:",d.hex(" "))
def send(self,data:bytearray):
self.ser.write(data)
# 测试上位机
def ecode_test(self,times:int):
print("检测赋码系统耗时测试:")
data+=d
if(len(data)==3):
if(data[0]==0x59 and data[1]==0x6d and data[2]==0x43):
self.num_to_recv=5
else:
data=data[1:]
self.num_to_recv=0
elif(len(data)==5):
length=data[3]|(data[4]<<8)
if(length<65535):
self.num_to_recv+=length+2
self.is_big_data=False
else:
self.num_to_recv=12
self.is_big_data=True
elif(len(data)==12):
if(self.is_big_data==True):
length=data[8]|(data[9]<<8)|(data[10]<<16)|(data[11]<<24)
self.num_to_recv=5+length+2
if(self.num_to_recv>0 and self.num_to_recv==len(data)):
# print("recv:",data.hex(" "))
return self.decode(data)
def encode(self,data:bytearray):
t=bytearray()
length=len(data)+3
t.append(0x59)
t.append(0x6d)
t.append(length&0xff)
t.append(length>>8)
t.append(self.cmd)
t.append(self.cmd_no&0xff)
t.append(self.cmd_no>>8)
t+=data
a,b=crc16(t,2,length+4)
t.append(a)
t.append(b)
# print("encode:",t.hex(","))
return t
def send(self,cmd:int,data:bytearray):
self.cmd=cmd
self.cmd_no+=1
# print("send:",data.hex(","))
self.ser.write(self.encode(data))
# 测试批检仪
def checker_test(self,times:int):
print("批检仪测试:")
tick=0
save=checker_save.save()
data=bytearray()
while(tick<times):
tick+=1
print("当前={d1},总共={d2}".format(d1=tick,d2=times))
# 等待数据库写入
time.sleep(3)
start = time.perf_counter()
# 开始检测
self.send(bytearray([0xB0, 0x00, 0x02, 0x00, 0x60]))
# 接收请求检测命令
data=self.recv()
if(self.cmd==0x37):
self.send(0x30,bytearray())
# 接收指令应答
self.recv(5)
self.recv()
# 接收检测结果
self.recv(24)
data=self.recv()
if(self.cmd==0x31):
self.send(0x31,bytearray())
save.save(data)
end = time.perf_counter()
print("检测耗时:",end-start)
start2=time.perf_counter()
# 开始注码
self.send(bytearray([0xF0, 0x00, 0x02, 0xE0, 0x41, 0xB1, 0x00, 0x02, 0x00, 0xFB]))
# 接收指令应答
self.recv(5)
# 接收注码 结果
self.recv(305)
end = time.perf_counter()
print("注码耗时:",end-start2)
# 打标结束,保存数据库
self.send(bytearray([0xF0, 0x00, 0x02, 0xE2, 0x23, 0xB2, 0x00, 0x02, 0x00, 0x67]))
# 接收指令应答
self.recv(5)
end = time.perf_counter()
print("总耗时:",end-start)
# 测试注码仪
def coder_test(self,times:int):
print("赋码仪耗时测试:")
tick=0
while(tick<times):
tick+=1
start = time.perf_counter()
print("当前={d1},总共={d2}".format(d1=tick,d2=times))
# 开始检测
self.send(bytearray([0x59, 0x6D, 0x05, 0x00, 0x01, 0x66, 0x04, 0x05, 0x00, 0x2F, 0xD9]))
# 接收指令应答
self.recv(13)
# 接收检测结果
self.recv(72)
end = time.perf_counter()
print("检测耗时:",end-start)
start2=time.perf_counter()
# 开始注码
self.send(bytearray([0x59,0x6D,0x94,0x00,0x02,0xBE,0x01,0x0A,0x32,0x30,0x32,0x33,0x00,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x39,0x01,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x38,0x02,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x37,0x03,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x36,0x04,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x35,0x05,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x34,0x06,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x33,0x07,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x32,0x08,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x31,0x09,0x35,0x38,0x33,0x30,0x36,0x31,0x39,0x41,0x30,0x34,0x30,0x30,0x30,0x44,0xC1]))
# 接收指令应答
self.recv(12)
# 接收注码 结果
self.recv(401)
end = time.perf_counter()
print("注码耗时:",end-start2)
end = time.perf_counter()
print("总耗时:",end-start)
if __name__ == "__main__":
p=port()
# 检测赋码仪系统测试
p.open("com8",115200)
p.ecode_test(5)
# 赋码仪设备串口测试
# p.open("com5",9600)
# p.coder_test(5)
# p.open("com5",115200)
# p.coder_test(5)
# 赋码仪设备网口测试
# p.open("utcp",0)
# p.coder_test(5)
# 批检仪测试
p.open("utcp",0)
p.checker_test(5)

View File

@@ -0,0 +1,367 @@
{
"PlanID": 46534786,
"PlanBrief": "模拟工厂注码",
"CheckSoftVersion": [
1
],
"CheckHardVersion": [
1
],
"TimeOutS": 4,
"TimeOutM": 10,
"TimeOutUI": 12,
"TaskIDMax": 26,
"TaskArray": [
{
"TaskID": 0,
"TaskBrief": "电源准备",
"TaskIndex": 0,
"ParamCount": 1,
"ParamInfo": [
"预设电压1"
],
"ParamVal": [
88
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 1,
"TaskBrief": "上电充能",
"TaskIndex": 1,
"ParamCount": 3,
"ParamInfo": [
"总线电压",
"采样超时0.1ms",
"计时启停ADC"
],
"ParamVal": [
88,
5000,
400
],
"TestStandard": [
{
"Max": 95,
"Min": 80
},
{
"Max": 600,
"Min": 100
}
],
"ReturnCount": 2,
"ReturnInfo": [
"总线电压",
"大于启停的时间"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
23,
22
],
"RetryCount": 0
},
{
"TaskID": 5,
"TaskBrief": "写配置参数",
"TaskIndex": 2,
"ParamCount": 4,
"ParamInfo": [
"UID长度",
"密码长度",
"电流挡位",
"版本号"
],
"ParamVal": [
8,
4,
0,
1
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 32,
"TaskBrief": "加载配置",
"TaskIndex": 3,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [
{
"Max": 8,
"Min": 8
},
{
"Max": 4,
"Min": 4
},
{
"Max": 1,
"Min": 1
}
],
"ReturnCount": 3,
"ReturnInfo": [
"UID长度",
"密码长度",
"版本号"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
28,
28,
28,
255
],
"RetryCount": 0
},
{
"TaskID": 4,
"TaskBrief": "扫描UID",
"TaskIndex": 4,
"ParamCount": 2,
"ParamInfo": [
"UID长度",
"使1/失0UID对比"
],
"ParamVal": [
0,
0
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 24,
"TaskBrief": "状态码检测",
"TaskIndex": 5,
"ParamCount": 2,
"ParamInfo": [
"比较掩码",
"比较位"
],
"ParamVal": [
128,
0
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 11,
"TaskBrief": "桥丝检测",
"TaskIndex": 6,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [
{
"Max": 240,
"Min": 0
}
],
"ReturnCount": 1,
"ReturnInfo": [
"桥丝ADC"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
30
],
"RetryCount": 0
},
{
"TaskID": 8,
"TaskBrief": "充能统计",
"TaskIndex": 7,
"ParamCount": 5,
"ParamInfo": [
"充电挡位",
"统计超时",
"电流判线AD",
"充电结束值0.1uA",
"充电超时0.1S"
],
"ParamVal": [
34,
5000,
100,
600,
5
],
"TestStandard": [
{
"Max": 3500,
"Min": 1000
},
{
"Max": 600,
"Min": 200
},
{
"Max": 80,
"Min": 10
}
],
"ReturnCount": 3,
"ReturnInfo": [
"充能值0.1ms",
"充末电流0.1uA",
"最大充电电流0.1mA"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
34,
35,
32,
255
],
"RetryCount": 0
},
{
"TaskID": 7,
"TaskBrief": "模拟注码",
"TaskIndex": 8,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 40,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 26,
"TaskBrief": "复位",
"TaskIndex": 9,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 45,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 4,
"TaskBrief": "扫描UID",
"TaskIndex": 10,
"ParamCount": 2,
"ParamInfo": [
"UID长度",
"使1/失0UID对比"
],
"ParamVal": [
0,
1
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 31,
"TaskBrief": "密码验证",
"TaskIndex": 11,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 24,
"TaskBrief": "状态码检测",
"TaskIndex": 12,
"ParamCount": 2,
"ParamInfo": [
"比较掩码",
"比较位"
],
"ParamVal": [
32,
32
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 29,
"TaskBrief": "赋码设备使能",
"TaskIndex": 13,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 27,
"TaskBrief": "关总线",
"TaskIndex": 14,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
}
]
}

View File

@@ -117,5 +117,8 @@
赋码失败返回时返回小板的错误码
2023.6.25
电机下压
2023.6.26
第一次出现下载程序到一半,参数错误重启的情况
2023.6.26
批检仪完成整个检测流程测试编写测试脚本把检测结果保存到csv文件

View File

@@ -0,0 +1,118 @@
#include "board.h"
#include "stm32f4xx.h"
// PB6,7,8,9
// 输入脚
#define GPIO_Initer() {.GPIO_Mode=GPIO_Mode_IN,\
.GPIO_Speed=GPIO_Speed_100MHz,\
.GPIO_OType=GPIO_OType_PP,\
.GPIO_PuPd=GPIO_PuPd_UP \
}
typedef struct{
const char *name;
void (*gpio_clock_fun)(uint32_t,FunctionalState);
uint32_t gpio_rcc;
GPIO_TypeDef *gpio_base;
uint16_t gpio_pin;
volatile uint32_t *bitmap_pin;
}gpioin_dtb;
static const gpioin_dtb g_dtb[]={
{
.name="gpioin1",
.gpio_clock_fun=RCC_AHB1PeriphClockCmd,
.gpio_rcc=RCC_AHB1Periph_GPIOB,
.gpio_base=GPIOB,
.gpio_pin=6,
.bitmap_pin=&PININ(B,6),
},
{
.name="gpioin2",
.gpio_clock_fun=RCC_AHB1PeriphClockCmd,
.gpio_rcc=RCC_AHB1Periph_GPIOB,
.gpio_base=GPIOB,
.gpio_pin=7,
.bitmap_pin=&PININ(B,7),
},
{
.name="gpioin3",
.gpio_clock_fun=RCC_AHB1PeriphClockCmd,
.gpio_rcc=RCC_AHB1Periph_GPIOB,
.gpio_base=GPIOB,
.gpio_pin=8,
.bitmap_pin=&PININ(B,8),
},
{
.name="gpioin4",
.gpio_clock_fun=RCC_AHB1PeriphClockCmd,
.gpio_rcc=RCC_AHB1Periph_GPIOB,
.gpio_base=GPIOB,
.gpio_pin=9,
.bitmap_pin=&PININ(B,9),
},
};
typedef struct{
const gpioin_dtb *dtb;
}self_data;
static self_data g_self[LENGTH(g_dtb)];
def_find_fun(gpioin_dtb,g_dtb)
static int init(gpioin_def *g)
{
param_check(g);
if(g->private_data) return 0;
GPIO_InitTypeDef init=GPIO_Initer();
int index;
const gpioin_dtb *dtb=find(g->name,&index);
self_data *self=&g_self[index];
self->dtb=dtb;
g->private_data=self;
dtb->gpio_clock_fun(dtb->gpio_rcc,ENABLE);
init.GPIO_Pin = 1<<dtb->gpio_pin;
GPIO_Init(dtb->gpio_base, &init);
return 0;
}
static int deinit(gpioin_def *g)
{
return 0;
}
static int state(gpioin_def *g)
{
param_check(g);
param_check(g->private_data);
self_data *self=g->private_data;
return *self->dtb->bitmap_pin;
}
gpioin_init_export(gpioin1,init,deinit,state,0)
gpioin_init_export(gpioin2,init,deinit,state,0)
gpioin_init_export(gpioin3,init,deinit,state,0)
gpioin_init_export(gpioin4,init,deinit,state,0)

View File

@@ -6,7 +6,7 @@
#define BUILD_DATE "2023-06-25 17:31:20"
#define BUILD_DATE "2023-06-26 10:46:21"
#define SOFT_VERSION "0.01"

View File

@@ -40,7 +40,13 @@ typedef struct __pwm_def{
}pwm_def;
typedef struct __gpioin_def{
const char *name;
int (*init)(struct __gpioin_def *u);
int (*deinit)(struct __gpioin_def *u);
int (*state)(struct __gpioin_def *u);
void *private_data;
}gpioin_def;
@@ -91,6 +97,21 @@ typedef struct __pwm_def{
&_pwm_##name_,\
};
#define gpioin_init_export(name_,init_,deinit_,state_,priv_) \
const static char __dev_##name_##_name[] SECTION(".rodata.devstr") = #name_; \
RT_USED static gpioin_def _gpioin_##name_={\
.name=__dev_##name_##_name,\
.init=init_,\
.deinit=deinit_,\
.state=state_,\
.private_data=priv_,\
};\
RT_USED static const struct dev_struct __dev_##name_ SECTION("devstruct")= \
{ \
__dev_##name_##_name, \
&_gpioin_##name_,\
};

104
source/task/key.c Normal file
View File

@@ -0,0 +1,104 @@
#include "board.h"
#include "rtthread.h"
#include "debug.h"
#include "string.h"
#include "dev_flash.h"
#include "prot_uc.h"
#include "key.h"
#include "mystdlib.h"
// 作为批检仪使用时读取按键
typedef struct{
int inited;
int run;
}self_def;
static self_def g_self;
static void request_check(void *p);
static void key_thread(void *arg)
{
self_def *s=arg;
gpioin_def *in1,*in2,*in3,*in4;
int input=0,input_lock=1;
in1=dev_get("gpioin1");
in2=dev_get("gpioin2");
in3=dev_get("gpioin3");
in4=dev_get("gpioin4");
in1->init(in1);
in2->init(in2);
in3->init(in3);
in4->init(in4);
while (s->run)
{
rt_thread_mdelay(20);
//input=(in1->state(in1))|(in2->state(in2)<<1)|(in3->state(in3)<<2)|(in4->state(in4)<<3);
input=(in1->state(in1));
if(input!=input_lock)
{
DBG_LOG("key=%08X",input);
input_lock=input;
if((input&1)==0)
{
request_check(s);
}
}
}
}
// cmd=0x37
static void request_check(void *p)
{
const sys_param_def *par=sys_param();
array_def *d=arr_creat();
emit key_send_signal(p,0x37,arr_temp(d));
//DBG_LOG("tcp liver:%s",str_temp(arr_string(d)));
}
static void init_later(void *t)
{
void *protu=app_variable("protu",0,0);
if(protu){
protu_codec_set(protu,protu_find_codec("ym_checker"));
connect(t,key_send_signal,0,protu,protu_send_call);
DBG_LOG("key thread created");
}else{
DBG_WARN("can not fond variable \"protu\"");
}
}
static int init_thread(void)
{
if(strcmp(sys_param()->device_type,"checker")==0)
{
self_def *s=&g_self;
s->inited=1;
s->run=1;
rt_thread_t rt_t=rt_thread_create("key_t",key_thread,s,1024,15,20);
rt_thread_startup(rt_t);
app_valid_call("protu",init_later,s);
}
return 0;
}
app_init_export(init_thread)

28
source/task/key.h Normal file
View File

@@ -0,0 +1,28 @@
#ifndef key_h__
#define key_h__
#include "rtthread.h"
#include "transmit.h"
#include "signal.h"
#include "bytearray.h"
signal key_send_signal(void *obj,uint8_t cmd,array_def *data);
#endif

View File

@@ -4,6 +4,7 @@
#include "handle.h"
#include "handle_for_checker.h"
#include "handle_for_coder.h"
#include "key.h"
#include "log.h"
#include "moter.h"
#include "prot_mcu.h"
@@ -59,6 +60,17 @@ signal_export(port_end_signal);
uint32_t param[4];
param[0]=(uint32_t)src;
param[1]=(uint32_t)data;
param[2]=(uint32_t)ack;
param[3]=(uint32_t)err_str;
_signal_emit(obj,port_end_signal,param,4);
}
signal_export(port_end_signal);
void key_send_signal(void *obj,uint8_t cmd,array_def *data)
{