4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
热卖商品
新闻详情
ean128与code128 条形码 算法分析_weixin_30878361的博客-CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-25

【code128条形码组成】

除终止符 STOP 由13个模块组成外 其他字符均由11个模块组成

就是说,如果用‘1’表示黑线(实模块),用‘0’表示白线(空模块) 那么每表示一个字符就需要11条线 也就是11个模块。

在条码字符中 每三个条和三个空组成一个字符 终止符有四个条和三个空组成。 就是说 这11条线的颜色 是依据一定的规则将其分布于三个黑线区和三个白线区 当然是黑白相间的。就像这样             11100110100,11011011000。具体的编码要参照码表 查找对应的字符或编码。   【code128码表】其中b black代表黑线 s space代表白线   IDCode128ACode128BCode128CBandCode编码值0SP SP0212222bbsbbssbbss1!!1222122bbssbbsbbss2 2222221bbssbbssbbs3##3121223bssbssbbsss4$$4121322bssbsssbbss5%%5131222bsssbssbbss6 6122213bssbbssbsss7 7122312bssbbsssbss8((8132212bsssbbssbss9))9221213bbssbssbsss10**10221312bbssbsssbss11 11231212bbsssbssbss12,,12112232bsbbssbbbss13--13122132bssbbsbbbss14..14122231bssbbssbbbs15//15113222bsbbbssbbss160016123122bssbbbsbbss171117123221bssbbbssbbs182218223211bbssbbbssbs193319221132bbssbsbbbss204420221231bbssbssbbbs215521213212bbsbbbssbss226622223112bbssbbbsbss237723312131bbbsbbsbbbs248824311222bbbsbssbbss259925321122bbbssbsbbss26::26321221bbbssbssbbs27;;27312212bbbsbbssbss28 28322112bbbssbbsbss29 29322211bbbssbbssbs30 30212123bbsbbsbbsss31??31212321bbsbbsssbbs32 32232121bbsssbbsbbs33AA33111323bsbsssbbsss34BB34131123bsssbsbbsss35CC35131321bsssbsssbbs36DD36112313bsbbsssbsss37EE37132113bsssbbsbsss38FF38132311bsssbbsssbs39GG39211313bbsbsssbsss40HH40231113bbsssbsbsss41II41231311bbsssbsssbs42JJ42112133bsbbsbbbsss43KK43112331bsbbsssbbbs44LL44132131bsssbbsbbbs45MM45113123bsbbbsbbsss46NN46113321bsbbbsssbbs47OO47133121bsssbbbsbbs48PP48313121bbbsbbbsbbs49QQ49211331bbsbsssbbbs50RR50231131bbsssbsbbbs51SS51213113bbsbbbsbsss52TT52213311bbsbbbsssbs53UU53213131bbsbbbsbbbs54VV54311123bbbsbsbbsss55WW55311321bbbsbsssbbs56XX56331121bbbsssbsbbs57YY57312113bbbsbbsbsss58ZZ58312311bbbsbbsssbs59[[59332111bbbsssbbsbs60\\\\60314111bbbsbbbbsbs61]]61221411bbssbssssbs62^^62431111bbbbsssbsbs63__63111224bsbssbbssss64NUL 64111422bsbssssbbss65SOHa65121124bssbsbbssss66STXb66121421bssbssssbbs67ETXc67141122bssssbsbbss68EOTd68141221bssssbssbbs69ENQe69112214bsbbssbssss70ACKf70112412bsbbssssbss71BELg71122114bssbbsbssss72BSh72122411bssbbssssbs73HTi73142112bssssbbsbss74LFj74142211bssssbbssbs75VTk75241211bbssssbssbs76FFI76221114bbssbsbssss77CRm77413111bbbbsbbbsbs78SOn78241112bbssssbsbss79SIo79134111bsssbbbbsbs80DLEp80111242bsbssbbbbss81DC1q81121142bssbsbbbbss82DC2r82121241bssbssbbbbs83DC3s83114212bsbbbbssbss84DC4t84124112bssbbbbsbss85NAKu85124211bssbbbbssbs86SYNv86411212bbbbsbssbss87ETBw87421112bbbbssbsbss88CANx88421211bbbbssbssbs89EMy89212141bbsbbsbbbbs90SUBz90214121bbsbbbbsbbs91ESC{91412121bbbbsbbsbbs92FS|92111143bsbsbbbbsss93GS}93111341bsbsssbbbbs94RS~94131141bsssbsbbbbs95USDEL95114113bsbbbbsbsss96FNC3FNC396114311bsbbbbsssbs97FNC2FNC297411113bbbbsbsbsss98SHIFTSHIFT98411311bbbbsbsssbs99CODECCODEC99113141bsbbbsbbbbs100CODEBFNC4CODEB114131bsbbbbsbbbs101FNC4CODEACODEA311141bbbsbsbbbbs102FNC1FNC1FNC1411131bbbbsbsbbbs103StartAStartAStartA211412bbsbssssbss104StartBStartBStartB211214bbsbssbssss105StartCStartCStartC211232bbsbssbbbss106StopStopStop2331112bbsssbbbsbsbb  

【Code128各编码方式的编码范围】

1、Code128A 标准数字和字母 控制符 特殊字符

2、Code128B 标准数字和字母 小写字母 特殊字符

3、Code128C/EAN128 [00]-[99]的数字对集合 共100个 即只能表示偶数位长度的数字。

【Code128编码规则】 开始位  FNC1(为EAN128码时加)   数据位  检验位  结束位

【Code128检验位计算】 开始位对应的ID值  每位数据在整个数据中的位置×每位数据对应的ID值 % 103

 

编码类型开始位FNC1Code128AStartA无 Code128BStartB无Code128CStartC无Ean128StartCFNC1

【C#代码】

\"\" \"\"
 1 using System; 2 using System.Data; 3 using System.Collections.Generic; 4 using System.Text; 5 using System.Drawing; 6 7 8 namespace XXXX.Common 9 { 10 /// summary 11 /// 生成Code128A,Code128B,Code128C,EAN128条码 12 /// /summary 13 public class BarCode 14 { 15 /// summary 16 /// 生成条形码 17 /// /summary 18 /// param name barNumber 条形码 位数必须为2的倍数 /param 19 public void CreateBarCode(string barNumber) 20 { 21 if (barNumber.Length % 2 1) barNumber 0 barNumber; 22 Code128 code new Code128(); 23 //code.ValueFont new Font( Arial , 9); //显示条码文字字体 24 code.Height 38; 25 Bitmap image code.GetCodeImage(barNumber, Common.BarCode.Code128.Encode.Code128C); 26 image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); 27 } 28 public class Code128 29 { 30 private DataTable m_Code128 new DataTable(); 31 private uint m_Height 40; 32 /// nbsp; summary 33 /// nbsp;高度 34 /// nbsp; /summary 35 public uint Height { get { return m_Height; } set { m_Height value; } } 36 private Font m_ValueFont null; 37 /// nbsp; summary 38 /// nbsp;是否显示可见号码 nbsp;如果为NULL不显示号码 39 /// nbsp; /summary 40 public Font ValueFont { get { return m_ValueFont; } set { m_ValueFont value; } } 41 private byte m_Magnify 0; 42 /// nbsp; summary 43 /// nbsp;放大倍数 44 /// nbsp; /summary 45 public byte Magnify { get { return m_Magnify; } set { m_Magnify value; } } 46 /// nbsp; summary 47 /// nbsp;条码类别 48 /// nbsp; /summary 49 public enum Encode 50 { 51 Code128A, 52 Code128B, 53 Code128C, 54 EAN128 55 } 56 /// summary 57 /// 数据表 58 /// /summary 59 public Code128() 60 { 61 m_Code128.Columns.Add( ID ); 62 m_Code128.Columns.Add( Code128A ); 63 m_Code128.Columns.Add( Code128B ); 64 m_Code128.Columns.Add( Code128C ); 65 m_Code128.Columns.Add( BandCode ); 66 m_Code128.CaseSensitive true; 67 #region nbsp;数据表 68 m_Code128.Rows.Add( 0 , nbsp; , nbsp; , 00 , 212222 ); 69 m_Code128.Rows.Add( 1 , ! , ! , 01 , 222122 ); 70 m_Code128.Rows.Add( 2 , \\ , \\ , 02 , 222221 ); 71 m_Code128.Rows.Add( 3 , # , # , 03 , 121223 ); 72 m_Code128.Rows.Add( 4 , $ , $ , 04 , 121322 ); 73 m_Code128.Rows.Add( 5 , % , % , 05 , 131222 ); 74 m_Code128.Rows.Add( 6 , , , 06 , 122213 ); 75 m_Code128.Rows.Add( 7 , , , 07 , 122312 ); 76 m_Code128.Rows.Add( 8 , ( , ( , 08 , 132212 ); 77 m_Code128.Rows.Add( 9 , ) , ) , 09 , 221213 ); 78 m_Code128.Rows.Add( 10 , * , * , 10 , 221312 ); 79 m_Code128.Rows.Add( 11 , , , 11 , 231212 ); 80 m_Code128.Rows.Add( 12 , , , , , 12 , 112232 ); 81 m_Code128.Rows.Add( 13 , - , - , 13 , 122132 ); 82 m_Code128.Rows.Add( 14 , . , . , 14 , 122231 ); 83 m_Code128.Rows.Add( 15 , / , / , 15 , 113222 ); 84 m_Code128.Rows.Add( 16 , 0 , 0 , 16 , 123122 ); 85 m_Code128.Rows.Add( 17 , 1 , 1 , 17 , 123221 ); 86 m_Code128.Rows.Add( 18 , 2 , 2 , 18 , 223211 ); 87 m_Code128.Rows.Add( 19 , 3 , 3 , 19 , 221132 ); 88 m_Code128.Rows.Add( 20 , 4 , 4 , 20 , 221231 ); 89 m_Code128.Rows.Add( 21 , 5 , 5 , 21 , 213212 ); 90 m_Code128.Rows.Add( 22 , 6 , 6 , 22 , 223112 ); 91 m_Code128.Rows.Add( 23 , 7 , 7 , 23 , 312131 ); 92 m_Code128.Rows.Add( 24 , 8 , 8 , 24 , 311222 ); 93 m_Code128.Rows.Add( 25 , 9 , 9 , 25 , 321122 ); 94 m_Code128.Rows.Add( 26 , : , : , 26 , 321221 ); 95 m_Code128.Rows.Add( 27 , ; , ; , 27 , 312212 ); 96 m_Code128.Rows.Add( 28 , , , 28 , 322112 ); 97 m_Code128.Rows.Add( 29 , , , 29 , 322211 ); 98 m_Code128.Rows.Add( 30 , , , 30 , 212123 ); 99 m_Code128.Rows.Add( 31 , ? , ? , 31 , 212321 );100 m_Code128.Rows.Add( 32 , , , 32 , 232121 );101 m_Code128.Rows.Add( 33 , A , A , 33 , 111323 );102 m_Code128.Rows.Add( 34 , B , B , 34 , 131123 );103 m_Code128.Rows.Add( 35 , C , C , 35 , 131321 );104 m_Code128.Rows.Add( 36 , D , D , 36 , 112313 );105 m_Code128.Rows.Add( 37 , E , E , 37 , 132113 );106 m_Code128.Rows.Add( 38 , F , F , 38 , 132311 );107 m_Code128.Rows.Add( 39 , G , G , 39 , 211313 );108 m_Code128.Rows.Add( 40 , H , H , 40 , 231113 );109 m_Code128.Rows.Add( 41 , I , I , 41 , 231311 );110 m_Code128.Rows.Add( 42 , J , J , 42 , 112133 );111 m_Code128.Rows.Add( 43 , K , K , 43 , 112331 );112 m_Code128.Rows.Add( 44 , L , L , 44 , 132131 );113 m_Code128.Rows.Add( 45 , M , M , 45 , 113123 );114 m_Code128.Rows.Add( 46 , N , N , 46 , 113321 );115 m_Code128.Rows.Add( 47 , O , O , 47 , 133121 );116 m_Code128.Rows.Add( 48 , P , P , 48 , 313121 );117 m_Code128.Rows.Add( 49 , Q , Q , 49 , 211331 );118 m_Code128.Rows.Add( 50 , R , R , 50 , 231131 );119 m_Code128.Rows.Add( 51 , S , S , 51 , 213113 );120 m_Code128.Rows.Add( 52 , T , T , 52 , 213311 );121 m_Code128.Rows.Add( 53 , U , U , 53 , 213131 );122 m_Code128.Rows.Add( 54 , V , V , 54 , 311123 );123 m_Code128.Rows.Add( 55 , W , W , 55 , 311321 );124 m_Code128.Rows.Add( 56 , X , X , 56 , 331121 );125 m_Code128.Rows.Add( 57 , Y , Y , 57 , 312113 );126 m_Code128.Rows.Add( 58 , Z , Z , 58 , 312311 );127 m_Code128.Rows.Add( 59 , [ , [ , 59 , 332111 );128 m_Code128.Rows.Add( 60 , \\\\ , \\\\ , 60 , 314111 );129 m_Code128.Rows.Add( 61 , ] , ] , 61 , 221411 );130 m_Code128.Rows.Add( 62 , ^ , ^ , 62 , 431111 );131 m_Code128.Rows.Add( 63 , _ , _ , 63 , 111224 );132 m_Code128.Rows.Add( 64 , NUL , , 64 , 111422 );133 m_Code128.Rows.Add( 65 , SOH , a , 65 , 121124 );134 m_Code128.Rows.Add( 66 , STX , b , 66 , 121421 );135 m_Code128.Rows.Add( 67 , ETX , c , 67 , 141122 );136 m_Code128.Rows.Add( 68 , EOT , d , 68 , 141221 );137 m_Code128.Rows.Add( 69 , ENQ , e , 69 , 112214 );138 m_Code128.Rows.Add( 70 , ACK , f , 70 , 112412 );139 m_Code128.Rows.Add( 71 , BEL , g , 71 , 122114 );140 m_Code128.Rows.Add( 72 , BS , h , 72 , 122411 );141 m_Code128.Rows.Add( 73 , HT , i , 73 , 142112 );142 m_Code128.Rows.Add( 74 , LF , j , 74 , 142211 );143 m_Code128.Rows.Add( 75 , VT , k , 75 , 241211 );144 m_Code128.Rows.Add( 76 , FF , I , 76 , 221114 );145 m_Code128.Rows.Add( 77 , CR , m , 77 , 413111 );146 m_Code128.Rows.Add( 78 , SO , n , 78 , 241112 );147 m_Code128.Rows.Add( 79 , SI , o , 79 , 134111 );148 m_Code128.Rows.Add( 80 , DLE , p , 80 , 111242 );149 m_Code128.Rows.Add( 81 , DC1 , q , 81 , 121142 );150 m_Code128.Rows.Add( 82 , DC2 , r , 82 , 121241 );151 m_Code128.Rows.Add( 83 , DC3 , s , 83 , 114212 );152 m_Code128.Rows.Add( 84 , DC4 , t , 84 , 124112 );153 m_Code128.Rows.Add( 85 , NAK , u , 85 , 124211 );154 m_Code128.Rows.Add( 86 , SYN , v , 86 , 411212 );155 m_Code128.Rows.Add( 87 , ETB , w , 87 , 421112 );156 m_Code128.Rows.Add( 88 , CAN , x , 88 , 421211 );157 m_Code128.Rows.Add( 89 , EM , y , 89 , 212141 );158 m_Code128.Rows.Add( 90 , SUB , z , 90 , 214121 );159 m_Code128.Rows.Add( 91 , ESC , { , 91 , 412121 );160 m_Code128.Rows.Add( 92 , FS , | , 92 , 111143 );161 m_Code128.Rows.Add( 93 , GS , } , 93 , 111341 );162 m_Code128.Rows.Add( 94 , RS , ~ , 94 , 131141 );163 m_Code128.Rows.Add( 95 , US , DEL , 95 , 114113 );164 m_Code128.Rows.Add( 96 , FNC3 , FNC3 , 96 , 114311 );165 m_Code128.Rows.Add( 97 , FNC2 , FNC2 , 97 , 411113 );166 m_Code128.Rows.Add( 98 , SHIFT , SHIFT , 98 , 411311 );167 m_Code128.Rows.Add( 99 , CODEC , CODEC , 99 , 113141 );168 m_Code128.Rows.Add( 100 , CODEB , FNC4 , CODEB , 114131 );169 m_Code128.Rows.Add( 101 , FNC4 , CODEA , CODEA , 311141 );170 m_Code128.Rows.Add( 102 , FNC1 , FNC1 , FNC1 , 411131 );171 m_Code128.Rows.Add( 103 , StartA , StartA , StartA , 211412 );172 m_Code128.Rows.Add( 104 , StartB , StartB , StartB , 211214 );173 m_Code128.Rows.Add( 105 , StartC , StartC , StartC , 211232 );174 m_Code128.Rows.Add( 106 , Stop , Stop , Stop , 2331112 );175 #endregion176 }177 /// nbsp; summary 178 /// nbsp;获取128图形179 /// nbsp; /summary 180 /// nbsp; param nbsp;name p_Text 文字 /param 181 /// nbsp; param nbsp;name p_Code 编码 /param 182 /// nbsp; returns 图形 /returns 183 public Bitmap GetCodeImage(string p_Text, Encode p_Code)184 {185 string _ViewText p_Text;186 string _Text ;187 IList int _TextNumb new List int ();188 int _Examine 0; nbsp;//首位189 switch (p_Code)190 {191 case Encode.Code128C:192 _Examine 105;193 if (!((p_Text.Length 1) 0)) throw new Exception( 128C长度必须是偶数 );194 while (p_Text.Length ! 0)195 {196 int _Temp 0;197 try198 {199 int _CodeNumb128 Int32.Parse(p_Text.Substring(0, 2));200 }201 catch202 {203 throw new Exception( 128C必须是数字 );204 }205 _Text GetValue(p_Code, p_Text.Substring(0, 2), ref nbsp;_Temp);206 _TextNumb.Add(_Temp);207 p_Text p_Text.Remove(0, 2);208 }209 break;210 case Encode.EAN128:211 _Examine 105;212 if (!((p_Text.Length 1) 0)) throw new Exception( EAN128长度必须是偶数 );213 _TextNumb.Add(102);214 _Text 411131 ;215 while (p_Text.Length ! 0)216 {217 int _Temp 0;218 try219 {220 int _CodeNumb128 Int32.Parse(p_Text.Substring(0, 2));221 }222 catch223 {224 throw new Exception( 128C必须是数字 );225 }226 _Text GetValue(Encode.Code128C, p_Text.Substring(0, 2), ref nbsp;_Temp);227 _TextNumb.Add(_Temp);228 p_Text p_Text.Remove(0, 2);229 }230 break;231 default:232 if (p_Code Encode.Code128A)233 {234 _Examine 103;235 }236 else237 {238 _Examine 104;239 }240 while (p_Text.Length ! 0)241 {242 int _Temp 0;243 string _ValueCode GetValue(p_Code, p_Text.Substring(0, 1), ref nbsp;_Temp);244 if (_ValueCode.Length 0) throw new Exception( 无效的字符集! p_Text.Substring(0, 1).ToString());245 _Text _ValueCode;246 _TextNumb.Add(_Temp);247 p_Text p_Text.Remove(0, 1);248 }249 break;250 }251 if (_TextNumb.Count 0) throw new Exception( 错误的编码,无数据 );252 _Text _Text.Insert(0, GetValue(_Examine)); nbsp;//获取开始位253 for (int i 0; i ! _TextNumb.Count; i )254 {255 _Examine _TextNumb[i] * (i 1);256 }257 _Examine _Examine % 103; nbsp;//获得严效位258 _Text GetValue(_Examine); nbsp;//获取严效位259 _Text 2331112 ; nbsp;//结束位260 Bitmap _CodeImage GetImage(_Text);261 GetViewText(_CodeImage, _ViewText);262 return _CodeImage;263 }264 265 /// nbsp; summary 266 /// nbsp;获取目标对应的数据267 /// nbsp; /summary 268 /// nbsp; param nbsp;name p_Code 编码 /param 269 /// nbsp; param nbsp;name p_Value 数值 nbsp;A nbsp;b nbsp;30 /param 270 /// nbsp; param nbsp;name p_SetID 返回编号 /param 271 /// nbsp; returns 编码 /returns 272 private string GetValue(Encode p_Code, string p_Value, ref nbsp;int p_SetID)273 {274 if (m_Code128 null) return ;275 DataRow[] _Row m_Code128.Select(p_Code.ToString() p_Value );276 if (_Row.Length ! 1) throw new Exception( 错误的编码 p_Value.ToString());277 p_SetID Int32.Parse(_Row[0][ ID ].ToString());278 return _Row[0][ BandCode ].ToString();279 }280 /// nbsp; summary 281 /// nbsp;根据编号获得条纹282 /// nbsp; /summary 283 /// nbsp; param nbsp;name p_CodeId /param 284 /// nbsp; returns /returns 285 private string GetValue(int p_CodeId)286 {287 DataRow[] _Row m_Code128.Select( ID p_CodeId.ToString() );288 if (_Row.Length ! 1) throw new Exception( 验效位的编码错误 p_CodeId.ToString());289 return _Row[0][ BandCode ].ToString();290 }291 /// nbsp; summary 292 /// nbsp;获得条码图形293 /// nbsp; /summary 294 /// nbsp; param nbsp;name p_Text 文字 /param 295 /// nbsp; returns 图形 /returns 296 private Bitmap GetImage(string p_Text)297 {298 char[] _Value p_Text.ToCharArray();299 int _Width 0;300 for (int i 0; i ! _Value.Length; i )301 {302 _Width Int32.Parse(_Value[i].ToString()) * (m_Magnify 1);303 }304 Bitmap _CodeImage new Bitmap(_Width, (int)m_Height);305 Graphics _Garphics Graphics.FromImage(_CodeImage);306 //Pen nbsp;_Pen;307 int _LenEx 0;308 for (int i 0; i ! _Value.Length; i )309 {310 int _ValueNumb Int32.Parse(_Value[i].ToString()) * (m_Magnify 1); nbsp;//获取宽和放大系数311 if (!((i 1) 0))312 {313 //_Pen nbsp; nbsp;new nbsp;Pen(Brushes.White, nbsp;_ValueNumb);314 _Garphics.FillRectangle(Brushes.White, new Rectangle(_LenEx, 0, _ValueNumb, (int)m_Height));315 }316 else317 {318 //_Pen nbsp; nbsp;new nbsp;Pen(Brushes.Black, nbsp;_ValueNumb);319 _Garphics.FillRectangle(Brushes.Black, new Rectangle(_LenEx, 0, _ValueNumb, (int)m_Height));320 }321 //_Garphics.(_Pen, nbsp;new nbsp;Point(_LenEx, nbsp;0), nbsp;new nbsp;Point(_LenEx, nbsp;m_Height));322 _LenEx _ValueNumb;323 }324 _Garphics.Dispose();325 return _CodeImage;326 }327 /// nbsp; summary 328 /// nbsp;显示可见条码文字 nbsp;如果小于40 nbsp;不显示文字329 /// nbsp; /summary 330 /// nbsp; param nbsp;name p_Bitmap 图形 /param 331 private void GetViewText(Bitmap p_Bitmap, string p_ViewText)332 {333 if (m_ValueFont null) return;334 Graphics _Graphics Graphics.FromImage(p_Bitmap);335 SizeF _DrawSize _Graphics.MeasureString(p_ViewText, m_ValueFont);336 if (_DrawSize.Height p_Bitmap.Height - 10 || _DrawSize.Width p_Bitmap.Width)337 {338 _Graphics.Dispose();339 return;340 }341 int _StarY p_Bitmap.Height - (int)_DrawSize.Height;342 _Graphics.FillRectangle(Brushes.White, new Rectangle(0, _StarY, p_Bitmap.Width, (int)_DrawSize.Height));343 _Graphics.DrawString(p_ViewText, m_ValueFont, Brushes.Black, 0, _StarY);344 }345 }346 }347 }
code128

[代码转自]http://blog.csdn.net/anchenyanyue/article/details/7666284

现实中很多现有的代码库有code128码 但是没有ean128码 所以根据算法我们也可以很容易添加ean128.

一下是在barcodelib添加ean128的代码 这边只有code128部分,就当作是扩展吧 【BarcodeLibExtend下载】

 

 

转载于:https://www.cnblogs.com/AspDotNetMVC/p/3812031.html

本文链接: http://eandcchemicals.immuno-online.com/view-762338.html

发布于 : 2021-03-25 阅读(0)
公司介绍
品牌分类
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://