如何形成interleaved 2 of 5条码?

chinaren2003 2003-03-01 09:41:06
如何形成interleaved 2 of 5条码?是用字库,还是写程序?有高手请回复。
...全文
1529 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinaren2003 2003-03-08
  • 打赏
  • 举报
回复
问题还没解决,下岗了,但还是想找到2of5码?感谢您的支持!!
Methodor 2003-03-03
  • 打赏
  • 举报
回复
明天再给你个例子吧~
另外我贴的代码有太多问题,很久以前的东西,打开的是未修改完成的~
chinaren2003 2003-03-02
  • 打赏
  • 举报
回复
老兄,不好意思能不能告诉调哪的参数可使用线条变小,我调了pan.width=5处。我真的好急呀,快救火啦,谢谢
Methodor 2003-03-02
  • 打赏
  • 举报
回复
也是是39码~
调整参数即可~
chinaren2003 2003-03-02
  • 打赏
  • 举报
回复
老兄:我按你提供的方法,试了一下,但还是扫不出来,好象很粗很密
chinaren2003 2003-03-02
  • 打赏
  • 举报
回复
SOFTFUN_CSDN请问,我又找到一个CIA ITF Normal字体,请问它是2of5吗?
chinaren2003 2003-03-02
  • 打赏
  • 举报
回复
老兄多谢你提供这么多,我想顺便问一个,有没有最简单的字库呢,能不能帮我找找。谢了
Methodor 2003-03-02
  • 打赏
  • 举报
回复
条码在应用中的实现方式比较多,在此仅以常见的39码和交叉25码举例来说明了2种实现方式,事实上还有很多的实现方式,大家可以自己做尝试(如果有空闲,否则不提倡这样的尝试-比较浪费时间)~
其实关于条码的所有内容在GB中已经非常详细了,可查阅相关GB资料~

softfuns 2003-03-02
  • 打赏
  • 举报
回复
下面的函数是从类库中的数据窗口基础服务类中取得,作为datawindow或datastore的基础服务,可在dw中产生条码~
public function integer of_createbarcode_il25 (integer ai_layer, integer ai_x, integer ai_y, integer ai_w, integer ai_h, string as_code, boolean ab_show)
/**********************************************************************
//利用rectangle产生交叉25码Interleaved 2 of 5 bar code
// ai_x,ai_y 为条码的位置
//ai_w 条码窄线的宽度
//ai_h 高度
//as_code 要打印的字符串
//ab_show 是否产生字符
//Create 1999-09-02
//LastModify 2000-03-20
//Author: softfun
/**********************************************************************

string ls_layer
choose case ai_layer
case 0
ls_layer = "background"
case 1
ls_layer = "foreground"
case 2
ls_layer = "header"
case 3
ls_layer = "detail"
case 4
ls_layer = "summary"
case 5
ls_layer = "footer"
case else
return -1
end choose

integer li_w0[5],li_w1[5],li_barwidth
li_w0[1] = 191 * 0.03937
li_w0[2] = 267 * 0.03937
li_w0[3] = 508 * 0.03937
li_w0[4] = 1016 * 0.03937
li_w0[5] = 2032 * 0.03937

li_w1[1] = 429 * 0.03937
li_w1[2] = 800 * 0.03937
li_w1[3] = 1524 * 0.03937
li_w1[4] = 2540 * 0.03937
li_w1[5] = 5080 * 0.03937

//校验参数
if isnull(ai_w) or ai_w<1 or ai_w > 5 then return -1
li_barwidth = li_w1[ai_w]
ai_w = li_w0[ai_w]

//字符
string ls_code[10]
ls_code[1] = "00110" //0
ls_code[2] = "10001" //1
ls_code[3] = "01001" //2
ls_code[4] = "00101" //3
ls_code[5] = "00110" //4
ls_code[6] = "10100" //5
ls_code[7] = "01100" //6
ls_code[8] = "00011" //7
ls_code[9] = "10010" //8
ls_code[10] = "01010" //9

//X、Y Position
integer li_x,li_y,li_i,li_n,li_j

li_x = ai_x
li_y = ai_y

//长度必须为偶数,不足的补0
as_code = trim(as_code)
if mod(len(as_code),2)<>0 then
as_code += "0"
end if

//打印起始符
integer li_name = 1
string ls_modify
ls_modify = 'Create rectangle(band='+ls_layer+' x="'+string(li_x)+'" y="'+string(li_y)+'" width="'+string(ai_w)+'" height="'+string( ai_h)+'" name=rect_'+string(li_name)+' visible="1" brush.hatch="6" brush.color="33554432" pen.style="0" pen.width="5" pen.color="33554432" background.mode="2" background.color="33554432" )'
li_name++
idw_requestor.modify(ls_modify)
li_x += 2*ai_w
ls_modify = 'Create rectangle(band='+ls_layer+' x="'+string(li_x)+'" y="'+string(li_y)+'" width="'+string(ai_w)+'" height="'+string( ai_h)+'" name=rect_'+string(li_name)+' visible="1" brush.hatch="6" brush.color="33554432" pen.style="0" pen.width="5" pen.color="33554432" background.mode="2" background.color="33554432" )'
li_name++
idw_requestor.modify(ls_modify)
li_x += 2*ai_w

li_n = len(as_code)
string ls_bar
for li_i = 1 to li_n/2
for li_j = 1 to 5
if mid(ls_code[integer(mid(as_code,2*li_i - 1,1))+1],li_j,1) = '1' then
//打印宽条
ls_modify = 'Create rectangle(band='+ls_layer+' x="'+string(li_x)+'" y="'+string(li_y)+'" width="'+string(li_barwidth)+'" height="'+string( ai_h)+'" name=rect_'+string(li_name)+' visible="1" brush.hatch="6" brush.color="33554432" pen.style="0" pen.width="5" pen.color="33554432" background.mode="2" background.color="33554432" )'
li_name++
idw_requestor.modify(ls_modify)
li_x += li_barwidth
else
//打印窄条
ls_modify = 'Create rectangle(band='+ls_layer+' x="'+string(li_x)+'" y="'+string(li_y)+'" width="'+string(ai_w)+'" height="'+string( ai_h)+'" name=rect_'+string(li_name)+' visible="1" brush.hatch="6" brush.color="33554432" pen.style="0" pen.width="5" pen.color="33554432" background.mode="2" background.color="33554432" )'
li_name++
idw_requestor.modify(ls_modify)
li_x += ai_w
end if
if mid(ls_code[integer(mid(as_code,2*li_i,1))+1],li_j,1) = '1' then
li_x += li_barwidth //走宽
else
li_x += ai_w //走窄
end if
//打印字符
if li_j = 1 and ab_show then
ls_modify = 'Create text(band=' + ls_layer+' alignment="0" text="'+mid(as_code,2*li_i - 1,1)+&
'" border="0" color="33554432" x="'+string(li_x)+'" y="'+string(li_y + ai_h + 10)+'" width="110" height="60" html.valueishtml="0" '+&
'name=text_'+string(li_name)+' visible="1" font.face="Arial" font.height="-9" font.weight="400" font.family="2" '+&
'font.pitch="2" font.charset="0" background.mode="2" background.color="1073741824" )'
idw_requestor.modify(ls_modify)
end if
if li_j = 4 and ab_show then
ls_modify = 'Create text(band=' + ls_layer+' alignment="0" text="'+mid(as_code,2*li_i,1)+&
'" border="0" color="33554432" x="'+string(li_x)+'" y="'+string(li_y + ai_h + 10)+'" width="110" height="60" html.valueishtml="0" '+&
'name=text_'+string(li_name)+' visible="1" font.face="Arial" font.height="-9" font.weight="400" font.family="2" '+&
'font.pitch="2" font.charset="0" background.mode="2" background.color="1073741824" )'
idw_requestor.modify(ls_modify)
end if
next
next
//打印终止符
ls_modify = 'Create rectangle(band='+ls_layer+' x="'+string(li_x)+'" y="'+string(li_y)+'" width="'+string(li_barwidth)+'" height="'+string( ai_h)+'" name=rect_'+string(li_name)+' visible="1" brush.hatch="6" brush.color="33554432" pen.style="0" pen.width="5" pen.color="33554432" background.mode="2" background.color="33554432" )'
li_name++
idw_requestor.modify(ls_modify)
li_x += li_barwidth + ai_w
ls_modify = 'Create rectangle(band='+ls_layer+' x="'+string(li_x)+'" y="'+string(li_y)+'" width="'+string(ai_w)+'" height="'+string( ai_h)+'" name=rect_'+string(li_name)+' visible="1" brush.hatch="6" brush.color="33554432" pen.style="0" pen.width="5" pen.color="33554432" background.mode="2" background.color="33554432" )'
idw_requestor.modify(ls_modify)
return 1

Methodor 2003-03-02
  • 打赏
  • 举报
回复
下面的函数是从类库中的数据窗口基础服务类中取得,作为datawindow或datastore的基础服务,可在dw中产生条码~
public function integer of_createbarcode_c39 (integer ai_layer, integer ai_x, integer ai_y, integer ai_w, integer ai_h, string as_code, boolean ab_show)
/**********************************************************************
//利用rectangle产生39码
// ai_x,ai_y 为条码的位置
//ai_w 条码窄线的宽度
//ai_h 高度
//as_code 要打印的字符串
//ab_show 是否产生字符
//Create 1999-09-02
//LastModify 2000-03-20
//Author: softfun
/**********************************************************************
string ls_layer
choose case ai_layer
case 0
ls_layer = "background"
case 1
ls_layer = "foreground"
case 2
ls_layer = "header"
case 3
ls_layer = "detail"
case 4
ls_layer = "summary"
case 5
ls_layer = "footer"
case else
return -1
end choose

char Bar_Card[20],Bar_Print[22]
char Temp_Card[12]
string Bar_Table[40]
int i,j,X_Scan,Cal_Card,y_scan

x_scan = ai_x
y_scan = ai_y


Bar_Table[1]='00110-0100' // 0
Bar_Table[2]='10001-0100' // 1
Bar_Table[3]='01001-0100' // 2
Bar_Table[4]='11000-0100' // 3
Bar_Table[5]='00101-0100' // 4
Bar_Table[6]='10100-0100' // 5
Bar_Table[7]='01100-0100' // 6
Bar_Table[8]='00011-0100' // 7
Bar_Table[9]='10010-0100' // 8
Bar_Table[10]='01010-0100' // 9
Bar_Table[11]='10001-0010' // A
Bar_Table[12]='01001-0010' // B
Bar_Table[13]='11000-0010' // C
Bar_Table[14]='00101-0010' // D
Bar_Table[15]='10100-0010' // E
Bar_Table[16]='01100-0010' // F
Bar_Table[17]='00011-0010' // G
Bar_Table[18]='10010-0010' // H
Bar_Table[19]='01010-0010' // I
Bar_Table[20]='00110-0010' // J
Bar_Table[21]='10001-0001' // K
Bar_Table[22]='01001-0001' // L
Bar_Table[23]='11000-0001' // M
Bar_Table[24]='00101-0001' // N
Bar_Table[25]='10100-0001' // O
Bar_Table[26]='01100-0001' // P
Bar_Table[27]='00011-0001' // Q
Bar_Table[28]='10010-0001' // R
Bar_Table[29]='01010-0001' // S
Bar_Table[30]='00110-0001' // T
Bar_Table[31]='10001-1000' // U
Bar_Table[32]='01001-1000' // V
Bar_Table[33]='11000-1000' // W
Bar_Table[34]='00101-1000' // X
Bar_Table[35]='10100-1000' // Y
Bar_Table[36]='01100-1000' // Z
Bar_Table[37]='00011-1000' // -
Bar_Table[38]='10010-1000' // %
Bar_Table[39]='01010-1000' // $
Bar_Table[40]='00110-1000' // *

Bar_Card = upper(as_code)
Bar_Print = Bar_Card
if left(bar_card,1) <> '*' then
Bar_Print = '*' + Bar_Card // 添加起始符
end if
if right(bar_card,1) <> '*' then
Bar_Print = Bar_Card + '*' // 添加结束符
end if
j = 1
string ls_modify
integer li_name = 1
do
if (Bar_Print[j] = '*') then
Cal_Card = 40
elseif (Bar_Print[j] = '-') then
Cal_Card = 37
elseif (Bar_Print[j] >= 'A') then
Cal_Card = 11 + asc(Bar_Print[j]) - asc('A')
elseif (Bar_Print[j] >= '0') then
Cal_Card = 1 + asc(Bar_Print[j]) - asc('0')
end if
Temp_Card = Bar_Table[Cal_Card]
for i = 1 to 5
if (Temp_Card[i] = '0') then
ls_modify = 'Create rectangle(band='+ls_layer+' x="'+string(x_scan)+'" y="'+string(y_scan)+'" width="'+string(ai_w)+'" height="'+string( ai_h)+'" name=rect_'+string(li_name)+' visible="1" brush.hatch="6" brush.color="33554432" pen.style="0" pen.width="5" pen.color="33554432" background.mode="2" background.color="33554432" )'
li_name++
idw_requestor.modify(ls_modify)
X_Scan = X_Scan + ai_w
else
ls_modify = 'Create rectangle(band='+ls_layer+' x="'+string(x_scan)+'" y="'+string(y_scan)+'" width="'+string(3*ai_w)+'" height="'+string( ai_h)+'" name=rect_'+string(li_name)+' visible="1" brush.hatch="6" brush.color="33554432" pen.style="0" pen.width="5" pen.color="33554432" background.mode="2" background.color="33554432" )'
li_name++
idw_requestor.modify(ls_modify)
X_Scan = X_Scan + ai_w * 3
end if
if (Temp_Card[6 + i] = '1') then
X_Scan = X_Scan + 4 * ai_w
else
X_Scan = X_Scan + 3 * ai_w /2
end if
if i= 2 and ab_show and Bar_Print[j]<>'*' then
ls_modify = 'Create text(band='+ls_layer+' alignment="0" text="'+Bar_Print[j]+&
'" border="0" color="33554432" x="'+string(x_scan)+'" y="'+string(y_scan + ai_h + 10)+'" width="110" height="60" html.valueishtml="0" '+&
'name=text_'+string(li_name)+' visible="1" font.face="Arial" font.height="-9" font.weight="400" font.family="2" '+&
'font.pitch="2" font.charset="0" background.mode="2" background.color="1073741824" )'
idw_requestor.modify(ls_modify)
end if
next
j = j + 1
loop while (Bar_Print[j] <> '')

return 1
Methodor 2003-03-02
  • 打赏
  • 举报
回复
此函数可直接打印交叉25码:
public function integer of_barcode_il25_print (long al_job, integer ai_xpos, integer ai_ypos, integer ai_barwidth, string as_code, integer ai_h, boolean ab_printtext)

/**********************************************************************
//打印交叉25码Interleaved 2 of 5 bar code
//function of_barcode_il25_print 打印39码
//reteurn integer
//para:
// ai_xpos,ai_ypos 为条码打印的起始位置
// ai_barwidth 条码窄线的宽度 如只能选1-5.
// ai_h 条码高度,一般选200-500之间
// as_code 要打印的字符串
// ab_printtext 是否打印字符
//Create 1999-08-25
//LastModify 2000-03-18
//Author: softfun
/**********************************************************************

integer li_w0[5],li_w1[5],li_barwidth
//校正
integer li_v[5],li_vali
li_w0[1] = 191 * 0.03937
li_w0[2] = 267 * 0.03937
li_w0[3] = 508 * 0.03937
li_w0[4] = 1016 * 0.03937
li_w0[5] = 2032 * 0.03937

li_w1[1] = 429 * 0.03937
li_w1[2] = 800 * 0.03937
li_w1[3] = 1524 * 0.03937
li_w1[4] = 2540 * 0.03937
li_w1[5] = 5080 * 0.03937

li_v[1] = 6
li_v[2] = 8
li_v[3] = 10
li_v[4] = 18
li_v[5] = 40

//校验参数
if isnull(ai_barwidth) or ai_barwidth<1 or ai_barwidth > 5 then return -1
li_vali = li_v[ai_barwidth]
li_barwidth = li_w1[ai_barwidth]
ai_barwidth = li_w0[ai_barwidth]


//字符
string ls_code[10]
ls_code[1] = "00110" //0
ls_code[2] = "10001" //1
ls_code[3] = "01001" //2
ls_code[4] = "00101" //3
ls_code[5] = "00110" //4
ls_code[6] = "10100" //5
ls_code[7] = "01100" //6
ls_code[8] = "00011" //7
ls_code[9] = "10010" //8
ls_code[10] = "01010" //9

//X、Y Position
integer li_x,li_y,li_i,li_n,li_j

li_x = ai_xpos
li_y = ai_ypos


//长度必须为偶数,不足的补0
as_code = trim(as_code)
if mod(len(as_code),2)<>0 then
as_code += "0"
end if

//打印起始符
li_x += ai_barwidth/2
PrintLine(al_job,li_x,li_y,li_x,li_y + ai_h,ai_barwidth)
li_x += 2*ai_barwidth
PrintLine(al_job,li_x,li_y,li_x,li_y + ai_h,ai_barwidth)
li_x += 3*ai_barwidth/2

li_n = len(as_code)
string ls_bar
for li_i = 1 to li_n/2
for li_j = 1 to 5
if mid(ls_code[integer(mid(as_code,2*li_i - 1,1))+1],li_j,1) = '1' then
li_x += li_barwidth/2 //打印宽条-----校正
PrintLine(al_job,li_x,li_y + li_vali,li_x,li_y + ai_h - li_vali,li_barwidth)
li_x += li_barwidth/2
else
li_x += ai_barwidth/2 //打印窄条
PrintLine(al_job,li_x,li_y,li_x,li_y + ai_h,ai_barwidth)
li_x += ai_barwidth/2
end if
if mid(ls_code[integer(mid(as_code,2*li_i,1))+1],li_j,1) = '1' then
li_x += li_barwidth //走宽
else
li_x += ai_barwidth //走窄
end if
//打印字符
if li_j = 1 and ab_printtext then printtext(al_job,mid(as_code,2*li_i - 1,1),li_x,li_y + ai_h +50)
if li_j = 4 and ab_printtext then printtext(al_job,mid(as_code,2*li_i,1),li_x,li_y + ai_h +50)
next
next
//打印终止符-----校正
li_x += li_barwidth/2
PrintLine(al_job,li_x,li_y + li_vali,li_x,li_y + ai_h - li_vali,li_barwidth)
li_x += li_barwidth/2 + 3*ai_barwidth/2
PrintLine(al_job,li_x,li_y,li_x,li_y + ai_h,ai_barwidth)
return 1
Methodor 2003-03-02
  • 打赏
  • 举报
回复
此函数可直接打印39码~
注意:
本函数存在不少问题,不过可以给大家提供一种思路:
public function integer of_barcode_c39_print (long al_job, integer ai_xpos, integer ai_ypos, integer ai_barwidth, string as_code, integer ai_h, boolean ab_printtext)

/**********************************************************************
//function of_barcode_c39_print 打印39码
//reteurn integer
//para:
// ai_xpos,ai_ypos 为条码打印的起始位置
// ai_barwidth 条码窄线的宽度 如8、9、10、12、14、15....
// ai_h 条码高度,一般选200-500之间
// as_code 要打印的字符串
// ab_printtext 是否打印字符
//Create 1999-08-25
//LastModify 2000-03-18
//Author: softfun
/**********************************************************************

char Bar_Card[20],Bar_Print[22]
char Temp_Card[12]
string Bar_Table[40]
int i,j,X_Scan,Cal_Card,y_scan

x_scan = ai_xpos
y_scan = ai_ypos

Bar_Table[1]='00110-0100' // 0
Bar_Table[2]='10001-0100' // 1
Bar_Table[3]='01001-0100' // 2
Bar_Table[4]='11000-0100' // 3
Bar_Table[5]='00101-0100' // 4
Bar_Table[6]='10100-0100' // 5
Bar_Table[7]='01100-0100' // 6
Bar_Table[8]='00011-0100' // 7
Bar_Table[9]='10010-0100' // 8
Bar_Table[10]='01010-0100' // 9
Bar_Table[11]='10001-0010' // A
Bar_Table[12]='01001-0010' // B
Bar_Table[13]='11000-0010' // C
Bar_Table[14]='00101-0010' // D
Bar_Table[15]='10100-0010' // E
Bar_Table[16]='01100-0010' // F
Bar_Table[17]='00011-0010' // G
Bar_Table[18]='10010-0010' // H
Bar_Table[19]='01010-0010' // I
Bar_Table[20]='00110-0010' // J
Bar_Table[21]='10001-0001' // K
Bar_Table[22]='01001-0001' // L
Bar_Table[23]='11000-0001' // M
Bar_Table[24]='00101-0001' // N
Bar_Table[25]='10100-0001' // O
Bar_Table[26]='01100-0001' // P
Bar_Table[27]='00011-0001' // Q
Bar_Table[28]='10010-0001' // R
Bar_Table[29]='01010-0001' // S
Bar_Table[30]='00110-0001' // T
Bar_Table[31]='10001-1000' // U
Bar_Table[32]='01001-1000' // V
Bar_Table[33]='11000-1000' // W
Bar_Table[34]='00101-1000' // X
Bar_Table[35]='10100-1000' // Y
Bar_Table[36]='01100-1000' // Z
Bar_Table[37]='00011-1000' // -
Bar_Table[38]='10010-1000' // %
Bar_Table[39]='01010-1000' // $
Bar_Table[40]='00110-1000' // *

Bar_Card = upper(as_code)
Bar_Print = Bar_Card
if left(bar_card,1) <> '*' then
Bar_Print = '*' + Bar_Card // 添加起始符
end if
if right(bar_card,1) <> '*' then
Bar_Print = Bar_Card + '*' // 添加结束符
end if
j = 1

do
if (Bar_Print[j] = '*') then
Cal_Card = 40
elseif (Bar_Print[j] = '-') then
Cal_Card = 37
elseif (Bar_Print[j] >= 'A') then
Cal_Card = 11 + asc(Bar_Print[j]) - asc('A')
elseif (Bar_Print[j] >= '0') then
Cal_Card = 1 + asc(Bar_Print[j]) - asc('0')
end if
Temp_Card = Bar_Table[Cal_Card]
for i = 1 to 5
if (Temp_Card[i] = '0') then
X_Scan = X_Scan + ai_barwidth / 2
PrintLine(al_job,X_Scan,y_scan,x_Scan,y_scan + ai_h,ai_barwidth)
X_Scan = X_Scan + ai_barwidth / 2
else
X_Scan = X_Scan + ai_barwidth * 3 / 2
//+-6为校正
PrintLine(al_job,X_Scan,y_scan + 6,x_Scan,y_scan + ai_h - 6,3 * ai_barwidth)
X_Scan = X_Scan + ai_barwidth * 3 / 2
end if
if (Temp_Card[6 + i] = '1') then
X_Scan = X_Scan + 4 * ai_barwidth
else
X_Scan = X_Scan + 3 * ai_barwidth /2
end if
if i = 2 and ab_printtext and Bar_Print[j]<>'*' then printtext(al_job,Bar_Print[j],X_scan,y_scan + ai_h +50)
next
j = j + 1
loop while (Bar_Print[j] <> '')

return 1
chinaren2003 2003-03-02
  • 打赏
  • 举报
回复
还是不行,39码太长,一定要2of5码才可以,我曾看到过。所有的哥们快帮帮忙,急

Methodor 2003-03-02
  • 打赏
  • 举报
回复
IntP36DmTt是39码的一类字库~
chinaren2003 2003-03-02
  • 打赏
  • 举报
回复
我找到一个IntP36DmTt字库,有哪位高手知道是什么条码????
chinaren2003 2003-03-02
  • 打赏
  • 举报
回复
多谢SOFTFUN_CSDN!
Methodor 2003-03-02
  • 打赏
  • 举报
回复
字库网上很多,很容易找到的~
编码标准可查国标,很详细的~
晚上我贴些例子编码~
现在不在手边~
chinaren2003 2003-03-01
  • 打赏
  • 举报
回复
有没有2 OF 5的条码库呢??
dotnba 2003-03-01
  • 打赏
  • 举报
回复
我不清楚2 OF 5,只用了 3 OF 9
我已经贴了一个关于 3 OF 9 的
chinaren2003 2003-03-01
  • 打赏
  • 举报
回复
高手请问:
1.你有没有见过interleaved 2 of 5字库,能不能告之。多谢!

另写程序控制打印机线条,但我不知道条码线条的规则呀??您有高招吗????急、急,谢谢!!

写程序有多种方式:
1、直接向打印机发送打印线条命令~
2、在对象或控件上画线(可用API或对象),再打印对象~
3、在数据窗口中产生,打印数据窗口~
加载更多回复(1)

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧