极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12407|回复: 6

总是报错,请问数组可不可以多次传递?

[复制链接]
发表于 2015-4-7 14:26:05 | 显示全部楼层 |阅读模式
本帖最后由 butOn 于 2015-4-8 00:14 编辑

问题出在prtpage函数上,难道要考虑数组退化?



  1. /*
  2. * OLED_Arduino-3.0.ino
  3. *
  4. * Created by Jack, April 5, 2015.
  5. *
  6. * FUNCTION: This is a driver program to display some pics or words
  7. *                    on the OLED screen.
  8. *
  9. * OLED INFORMATION:
  10. *             96`    128*64,
  11. *        driver chip: SSD1306,
  12. *
  13. * INTERFACE: 4-wire SPI.
  14. *
  15. */
  16. #define SDIN 9  //D1
  17. #define SCLK 10  //D0
  18. #define DC 11  
  19. #define RST 13
  20. #define CS 12

  21. typedef struct insert {
  22. uint8_t page;
  23. uint8_t start;
  24. }insert;
  25. insert in = {0, 0};
  26. void OLED_INIT ();
  27. void w_cmd (uint8_t c);
  28. void w_data (uint8_t d);
  29. void clear_display ();
  30. void oprint (uint8_t w, insert *in);
  31. void oled_printf (char text[]);
  32. void prtpage (char c1[], char c2[], char c3[], char c4[]);

  33. //  ASCII  -  buff


  34. uint8_t buff_0[2][8] = {
  35. 0xF0, 0xF8, 0x0C, 0xC4, 0x0C, 0xF8, 0xF0, 0x00,
  36. 0x03, 0x07, 0x0C, 0x08, 0x0C, 0x07, 0x03, 0x00
  37. };
  38. uint8_t buff_1[2][8] = {
  39. 0x00, 0x10, 0x18, 0xFC, 0xFC, 0x00, 0x00, 0x00,
  40. 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x00
  41. };
  42. uint8_t buff_2[2][8] = {
  43. 0x08, 0x0C, 0x84, 0xC4, 0x64, 0x3C, 0x18, 0x00,
  44. 0x0E, 0x0F, 0x09, 0x08, 0x08, 0x0C, 0x0C, 0x00
  45. };
  46. uint8_t buff_3[2][8] = {
  47. 0x08, 0x0C, 0x44, 0x44, 0x44, 0xFC, 0xB8, 0x00,
  48. 0x04, 0x0C, 0x08, 0x08, 0x08, 0x0F, 0x07, 0x00
  49. };
  50. uint8_t buff_4[2][8] = {
  51. 0xC0, 0xE0, 0xB0, 0x98, 0xFC, 0xFC, 0x80, 0x00,
  52. 0x00, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00
  53. };
  54. uint8_t buff_5[2][8] = {
  55. 0x7C, 0x7C, 0x44, 0x44, 0x44, 0xC4, 0x84, 0x00,
  56. 0x04, 0x0C, 0x08, 0x08, 0x08, 0x0F, 0x07, 0x00
  57. };
  58. uint8_t buff_6[2][8] = {
  59. 0xF0, 0xF8, 0x4C, 0x44, 0x44, 0xC0, 0x80, 0x00,
  60. 0x07, 0x07, 0x08, 0x08, 0x08, 0x0F, 0x07, 0x00
  61. };
  62. uint8_t buff_7[2][8] = {
  63. 0x0C, 0x0C, 0x04, 0x84, 0xC4, 0x7C, 0x3C, 0x00,
  64. 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00
  65. };
  66. uint8_t buff_8[2][8] = {
  67. 0xB8, 0xFC, 0x44, 0x44, 0x44, 0xFC, 0xB8, 0x00,
  68. 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07, 0x00
  69. };
  70. uint8_t buff_9[2][8] = {
  71. 0x38, 0x7C, 0x44, 0x44, 0x44, 0xFC, 0xF8, 0x00,
  72. 0x00, 0x08, 0x08, 0x08, 0x0C, 0x07, 0x03, 0x00
  73. };

  74. uint8_t buff_a[2][8] = {
  75. 0x00, 0xA0, 0xA0, 0xA0, 0xE0, 0xC0, 0x00, 0x00,
  76. 0x07, 0x0F, 0x08, 0x08, 0x07, 0x0F, 0x08, 0x00
  77. };
  78. uint8_t buff_b[2][8] = {
  79. 0x04, 0xFC, 0xFC, 0x20, 0x60, 0xC0, 0x80, 0x00,
  80. 0x00, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x07, 0x00
  81. };
  82. uint8_t buff_c[2][8] = {
  83. 0xC0, 0xE0, 0x20, 0x20, 0x20, 0x60, 0x40, 0x00,
  84. 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0C, 0x04, 0x00
  85. };
  86. uint8_t buff_d[2][8] = {
  87. 0x80, 0xC0, 0x60, 0x24, 0xFC, 0xFC, 0x00, 0x00,
  88. 0x07, 0x0F, 0x08, 0x08, 0x07, 0x0F, 0x08, 0x00
  89. };
  90. uint8_t buff_e[2][8] = {
  91. 0xC0, 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, 0xC0, 0x00,
  92. 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0C, 0x04, 0x00
  93. };
  94. uint8_t buff_f[2][8] = {
  95. 0x40, 0xF8, 0xFC, 0x44, 0x0C, 0x18, 0x00, 0x00,
  96. 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00
  97. };
  98. uint8_t buff_g[2][8] = {
  99. 0xC0, 0xE0, 0x20, 0x20, 0xC0, 0xE0, 0x20, 0x00,
  100. 0x27, 0x6F, 0x48, 0x48, 0x7F, 0x3F, 0x00, 0x00
  101. };
  102. uint8_t buff_h[2][8] = {
  103. 0x04, 0xFC, 0xFC, 0x40, 0x20, 0xE0, 0xC0, 0x00,
  104. 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x0F, 0x0F, 0x00
  105. };
  106. uint8_t buff_i[2][8] = {
  107. 0x00, 0x00, 0x20, 0xEC, 0xEC, 0x00, 0x00, 0x00,
  108. 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x00
  109. };
  110. uint8_t buff_j[2][8] = {
  111. 0x00, 0x00, 0x00, 0x00, 0x20, 0xEC, 0xEC, 0x00,
  112. 0x00, 0x30, 0x70, 0x40, 0x40, 0x7F, 0x3F, 0x00
  113. };
  114. uint8_t buff_k[2][8] = {
  115. 0x04, 0xFC, 0xFC, 0x80, 0xC0, 0x60, 0x20, 0x00,
  116. 0x08, 0x0F, 0x0F, 0x01, 0x03, 0x0E, 0x0C, 0x00
  117. };
  118. uint8_t buff_l[2][8] = {
  119. 0x00, 0x00, 0x04, 0xFC, 0xFC, 0x00, 0x00, 0x00,
  120. 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x00
  121. };
  122. uint8_t buff_m[2][8] = {
  123. 0xE0, 0xE0, 0x60, 0xC0, 0x60, 0xE0, 0xC0, 0x00,
  124. 0x0F, 0x0F, 0x00, 0x07, 0x00, 0x0F, 0x0F, 0x00
  125. };
  126. uint8_t buff_n[2][8] = {
  127. 0x20, 0xE0, 0xC0, 0x20, 0x20, 0xE0, 0xC0, 0x00,
  128. 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x0F, 0x0F, 0x00
  129. };
  130. uint8_t buff_o[2][8] = {
  131. 0xC0, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0xC0, 0x00,
  132. 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07, 0x00
  133. };
  134. uint8_t buff_p[2][8] = {
  135. 0x20, 0xE0, 0xC0, 0x20, 0x20, 0xE0, 0xC0, 0x00,
  136. 0x40, 0x7F, 0x7F, 0x48, 0x08, 0x0F, 0x07, 0x00
  137. };
  138. uint8_t buff_q[2][8] = {
  139. 0xC0, 0xE0, 0x20, 0x20, 0xC0, 0xE0, 0x20, 0x00,
  140. 0x07, 0x0F, 0x08, 0x48, 0x7F, 0x7F, 0x40, 0x00
  141. };
  142. uint8_t buff_r[2][8] = {
  143. 0x20, 0xE0, 0xC0, 0x60, 0x20, 0xE0, 0xC0, 0x00,
  144. 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00
  145. };
  146. uint8_t buff_s[2][8] = {
  147. 0x40, 0xE0, 0xA0, 0x20, 0x20, 0x60, 0x40, 0x00,
  148. 0x04, 0x0C, 0x09, 0x09, 0x0B, 0x0E, 0x04, 0x00
  149. };
  150. uint8_t buff_t[2][8] = {
  151. 0x20, 0x20, 0xF8, 0xFC, 0x20, 0x20, 0x00, 0x00,
  152. 0x00, 0x00, 0x07, 0x0F, 0x08, 0x0C, 0x04, 0x00
  153. };
  154. uint8_t buff_u[2][8] = {
  155. 0xE0, 0xE0, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00,
  156. 0x07, 0x0F, 0x08, 0x08, 0x07, 0x0F, 0x08, 0x00
  157. };
  158. uint8_t buff_v[2][8] = {
  159. 0x00, 0xE0, 0xE0, 0x00, 0x00, 0xE0, 0xE0, 0x00,
  160. 0x00, 0x03, 0x07, 0x0C, 0x0C, 0x07, 0x03, 0x00
  161. };
  162. uint8_t buff_w[2][8] = {
  163. 0xE0, 0xE0, 0x00, 0x80, 0x00, 0xE0, 0xE0, 0x00,
  164. 0x07, 0x0F, 0x0C, 0x07, 0x0C, 0x0F, 0x07, 0x00
  165. };
  166. uint8_t buff_x[2][8] = {
  167. 0x20, 0x60, 0xC0, 0x80, 0xC0, 0x60, 0x20, 0x00,
  168. 0x08, 0x0C, 0x07, 0x03, 0x07, 0x0C, 0x08, 0x00
  169. };
  170. uint8_t buff_y[2][8] = {
  171. 0xE0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00,
  172. 0x47, 0x4F, 0x48, 0x48, 0x68, 0x3F, 0x1F, 0x00
  173. };
  174. uint8_t buff_z[2][8] = {
  175. 0x60, 0x60, 0x20, 0xA0, 0xE0, 0x60, 0x20, 0x00,
  176. 0x0C, 0x0E, 0x0B, 0x09, 0x08, 0x0C, 0x0C, 0x00
  177. };

  178.     void setup (){
  179.       
  180.       OLED_INIT ();
  181.       clear_display ();//一切好像总是等待那里,指向着同样的事情...
  182.     }

  183.     void loop (){
  184. //prtpage ("", "      but0n", "", "");
  185. //prtpage ("", "    knowledge", "       is", "     power");
  186. //prtpage ("       qq", "", "    32700567", "");
  187. //while (1){}
  188.     }

  189.           void OLED_INIT (){
  190.                   pinMode (SDIN, OUTPUT);
  191.                   pinMode (SCLK, OUTPUT);   
  192.                   pinMode (DC, OUTPUT);
  193.                   pinMode (RST, OUTPUT);
  194.                   pinMode (CS, OUTPUT);
  195. // You can find  Initial Sequence on the datasheet
  196.                   
  197.                   digitalWrite (RST, HIGH);  // Set RES# as High
  198.                   delay (1);                           // 3us Delay Recommended
  199.                   
  200.                   digitalWrite (RST, LOW);  // Reset
  201.                   delay(10);
  202.                   
  203.                   digitalWrite (RST, HIGH);
  204.                   
  205.                   w_cmd (0xAE);  // 1.Set Display Off
  206.                   
  207.                   w_cmd (0xD5); // 2.Set display Clock Divide Ratio/Oscillator Frequency
  208.                   w_cmd (0x80);
  209.                   
  210.                   w_cmd (0xA8); // 3.Set Multiplex Ratio
  211.                   w_cmd (0x3F);
  212.                   
  213.                   w_cmd (0xD3); // 4.Set Display Offset
  214.                   w_cmd (0x00);
  215.                   
  216.                   w_cmd (0x40); // 5.Set Display Start Line
  217.                   
  218.   // 6.Set Segment Re-Map     0xA1     ***
  219.   // 7.Set COM Output Scan Direction     0xC8      ***
  220.   // 8.Set COM Pins Hardware Configurartion     0xDA, 0x12      ***
  221.   // 9.Set Contrast Control     0x81, 0x66      **^
  222.   // 10.Set Pre-Charge Period     0xD9, 0xF1       ***
  223.   // 11.Set VCOMH Deselect Level      0xDB, 0x30      **^
  224.   // 12.Set Entire Display On/Off      0xA4      ***
  225.   // 13.Set Normal/Inverse Display     0xA6    ***
  226.   // Clear Screen
  227.   
  228. //                  w_cmd (0x8D);// 14.Set Charge Pump
  229. //                  w_cmd (0x14);
  230.                   
  231. // 15.Set Display On    0xAF     ***
  232.                   w_cmd (0x20);
  233.                   w_cmd (0x10); //0x00
  234.                   
  235.                   w_cmd (0xA1); // 6.Set Segment Re-Map
  236.                   
  237.                   w_cmd (0xC8); // 7.Set COM Output Scan Direction
  238.                   
  239.                   w_cmd (0xDA); // 8.Set COM Pins Hardware Configurartion
  240.                   w_cmd (0x12);
  241.                   
  242.                   w_cmd (0x81); // 9.Set Contrast Control   0x66
  243.                   w_cmd (0x66); // 0xCF
  244.                   
  245.                   w_cmd (0xD9); // 10.Set Pre-Charge Period
  246.                   w_cmd (0xF1);
  247.                   
  248.                   w_cmd (0xDB); // 11.Set VCOMH Deselect Level  0x30
  249.                   w_cmd (0x30); // 0x40
  250.                   
  251.                   w_cmd (0xA4); // 12.Set Entire Display On/Off
  252.                   
  253.                   w_cmd (0xA6); // 13.Set Normal/Inverse Display
  254.                   
  255.                   w_cmd (0x8D);// 14.Set Charge Pump
  256.                   w_cmd (0x14);
  257.                   
  258.                   w_cmd (0xAF); // 15.Set Display On
  259.                   
  260.                   
  261.           }
  262.               void w_cmd (uint8_t c){
  263.                 digitalWrite (CS, HIGH);
  264.                 digitalWrite (DC, LOW); // Command
  265.                 digitalWrite (CS, LOW);
  266.                     shiftOut (SDIN, SCLK, MSBFIRST, c);
  267.                 digitalWrite (CS, HIGH);
  268.               }
  269.               
  270.               void w_data (uint8_t d){
  271.                 digitalWrite (CS, HIGH);
  272.                 digitalWrite (DC, HIGH); // Data
  273.                 digitalWrite (CS, LOW);
  274.                     shiftOut (SDIN, SCLK, MSBFIRST, d);
  275.                 digitalWrite (CS, HIGH);
  276.               }
  277.                     
  278.                     void clear_display (){
  279.                             w_cmd (0xAE);
  280.                             in = {0, 0};
  281.                             uint8_t x, y; // x = SEG  [0:127]    y = PAGE  [0:7]
  282.                             for (y = 0; y < 8; y++){
  283.                                     w_cmd (0xB0 + y);  // Set Page Number
  284.                                     w_cmd (0x00);  //  Set Low  (4bit)
  285.                                     w_cmd (0x10);  //  Set High (4bit)
  286.                                     for (x = 0; x<128; x++)
  287.                                             w_data (0x00);
  288.                            
  289.                             }
  290. w_cmd (0xAF);
  291.                     }
  292.                     
  293.                     
  294.                     
  295.            
  296.     void oprint (uint8_t w, struct insert *in){
  297.                   if (in->page > 7 ){
  298.                           *in = {0, 0};
  299.                           delay (500);
  300.                           clear_display ();
  301.                   }
  302.                 uint8_t t, n;
  303.                 for (t = 0; t < 2; t++){
  304.                             w_cmd (0xB0 + in->page + t);
  305.                             w_cmd (in->start & 0x0F);
  306.                             w_cmd (((in->start >> 4) & 0x0F) | 0x10);
  307.                             for (n = 0; n < 8; n++){
  308.                                             switch (w){
  309.                                              
  310.                                               case '0':  
  311.                                               w_data (buff_0[t][n]);
  312.                                               break;
  313.                                               case '1':  
  314.                                               w_data (buff_1[t][n]);
  315.                                               break;
  316.                                               case '2':  
  317.                                               w_data (buff_2[t][n]);
  318.                                               break;
  319.                                               case '3':  
  320.                                               w_data (buff_3[t][n]);
  321.                                               break;
  322.                                               case '4':  
  323.                                               w_data (buff_4[t][n]);
  324.                                               break;
  325.                                               case '5':  
  326.                                               w_data (buff_5[t][n]);
  327.                                               break;
  328.                                               case '6':  
  329.                                               w_data (buff_6[t][n]);
  330.                                               break;
  331.                                               case '7':  
  332.                                               w_data (buff_7[t][n]);
  333.                                               break;
  334.                                               case '8':  
  335.                                               w_data (buff_8[t][n]);
  336.                                               break;
  337.                                               case '9':  
  338.                                               w_data (buff_9[t][n]);
  339.                                               break;
  340.                                               case 'a':  
  341.                                               w_data (buff_a[t][n]);
  342.                                               break;
  343.                                               case 'b':  
  344.                                               w_data (buff_b[t][n]);
  345.                                               break;
  346.                                               case 'c':  
  347.                                               w_data (buff_c[t][n]);
  348.                                               break;
  349.                                               case 'd':  
  350.                                               w_data (buff_d[t][n]);
  351.                                               break;
  352.                                               case 'e':  
  353.                                               w_data (buff_e[t][n]);
  354.                                               break;
  355.                                               case 'f':  
  356.                                               w_data (buff_f[t][n]);
  357.                                               break;
  358.                                               case 'g':  
  359.                                               w_data (buff_g[t][n]);
  360.                                               break;
  361.                                               case 'h':  
  362.                                               w_data (buff_h[t][n]);
  363.                                               break;
  364.                                               case 'i':  
  365.                                               w_data (buff_i[t][n]);
  366.                                               break;
  367.                                               case 'j':  
  368.                                               w_data (buff_j[t][n]);
  369.                                               break;
  370.                                               case 'k':  
  371.                                               w_data (buff_k[t][n]);
  372.                                               break;
  373.                                               case 'l':  
  374.                                               w_data (buff_l[t][n]);
  375.                                               break;
  376.                                               case 'm':  
  377.                                               w_data (buff_m[t][n]);
  378.                                               break;
  379.                                               case 'n':  
  380.                                               w_data (buff_n[t][n]);
  381.                                               break;
  382.                                               case 'o':  
  383.                                               w_data (buff_o[t][n]);
  384.                                               break;
  385.                                               case 'p':  
  386.                                               w_data (buff_p[t][n]);
  387.                                               break;
  388.                                               case 'q':  
  389.                                               w_data (buff_q[t][n]);
  390.                                               break;
  391.                                               case 'r':  
  392.                                               w_data (buff_r[t][n]);
  393.                                               break;
  394.                                               case 's':  
  395.                                               w_data (buff_s[t][n]);
  396.                                               break;
  397.                                               case 't':  
  398.                                               w_data (buff_t[t][n]);
  399.                                               break;
  400.                                               case 'u':  
  401.                                               w_data (buff_u[t][n]);
  402.                                               break;
  403.                                               case 'v':  
  404.                                               w_data (buff_v[t][n]);
  405.                                               break;
  406.                                               case 'w':  
  407.                                               w_data (buff_w[t][n]);
  408.                                               break;
  409.                                               case 'x':  
  410.                                               w_data (buff_x[t][n]);
  411.                                               break;
  412.                                               case 'y':  
  413.                                               w_data (buff_y[t][n]);
  414.                                               break;
  415.                                               case 'z':  
  416.                                               w_data (buff_z[t][n]);
  417.                                               break;
  418.                                               default:
  419.                                               case ' ':  
  420.                                               w_data (0x00);
  421.                                               break;                                       


  422.                                             }  //switch
  423.                             }//for
  424.                   }
  425.                   in->start += 8;
  426.                   if (in->start >= 128){
  427.                           in->start = 0;
  428.                           in->page += 2;
  429.                   }

  430.    
  431.     }

  432. void oled_printf(char text[]) {
  433. int c, q;
  434. for (c = 0; text[c] != NULL; c++)
  435. oprint (text[c], &in);
  436. for (q = 0; q < (16 - c); q++)
  437. oprint (' ', &in);
  438. }
  439. void prtpage (char c1[], char c2[], char c3[], char c4[]) {
  440.       w_cmd (0xAE);
  441.       oled_printf (c1[], &in);
  442.       oled_printf (c2[], &in);
  443.       oled_printf (c3[], &in);
  444.       oled_printf (c4[], &in);
  445.       w_cmd (0xAF);
  446.       delay (1200);
  447.       clear_display ();
  448.       delay (800);
  449. }
  450.                                           
复制代码
回复

使用道具 举报

发表于 2015-4-7 14:39:30 | 显示全部楼层
声明是这个
void oled_printf(char text[]) {
int c, q;
for (c = 0; text[c] != NULL; c++)
oprint (text[c], &in);
for (q = 0; q < (16 - c); q++)
oprint (' ', &in);

}

你确定这样调用没问题吗?
oled_printf (c1[], &in);
oled_printf (c2[], &in);
oled_printf (c3[], &in);
oled_printf (c4[], &in);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-7 17:04:30 | 显示全部楼层
328522073 发表于 2015-4-7 14:39
声明是这个
void oled_printf(char text[]) {
int c, q;

啊啊啊啊啊啊  原来是酱紫 我要炸了了!!!!
谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-7 18:30:01 | 显示全部楼层
328522073 发表于 2015-4-7 14:39
声明是这个
void oled_printf(char text[]) {
int c, q;

还是不行,char* to char**、before ] 什么的,和数组有关
回复 支持 反对

使用道具 举报

发表于 2015-4-7 19:45:04 | 显示全部楼层
        错误信息是什么?
回复 支持 反对

使用道具 举报

发表于 2015-4-7 22:43:08 | 显示全部楼层
butOn 发表于 2015-4-7 18:30
还是不行,char* to char**、before ] 什么的,和数组有关

声明是这个
void oled_printf(char text[]) {
int c, q;
for (c = 0; text[c] != NULL; c++)
oprint (text[c], &in);
for (q = 0; q < (16 - c); q++)
oprint (' ', &in);

}
调用应该是oled_printf(c1),不再加方括号。数组名表示数组首地址指针。c1是char*型指针,c1[]表示指针的指针即char**。(oled_printf(char text[])表示接受的参数是oled_printf(char *))
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-8 00:13:06 | 显示全部楼层
328522073 发表于 2015-4-7 22:43
声明是这个
void oled_printf(char text[]) {
int c, q;

我后来试着删除了括号结果编译成功了

原来是这样, 谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-17 15:01 , Processed in 0.041412 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表