name: jinling description: Jinling (JILN) connector MPN encoding, position-based part numbering for pin headers, female headers, and IDC connectors.
Jinling (JILN) Manufacturer Skill
Company Overview
Full Name: Shenzhen Jinling Electronics Co., Ltd. Brand: JILN (Jiln) Founded: 2004 Website: szjiln.en.made-in-china.com, jilnconnector.com Specialization: Pin headers, female headers, board-to-board connectors, IDC, terminal blocks Patents: 280+ independent innovation patents
MPN Encoding Systems
Jinling uses two different MPN numbering systems:
1. Elprint Position-Based Encoding (15 characters)
27 31 0 2 02 A N G3 S U T
│ │ │ │ │ │ │ │ │ │ └─ [14] Packing
│ │ │ │ │ │ │ │ │ └─── [13] ContactType
│ │ │ │ │ │ │ │ └───── [12] ConnectorType
│ │ │ │ │ │ │ └─────── [10-11] ContactPlating
│ │ │ │ │ │ └────────── [9] Post
│ │ │ │ │ └─────────── [8] InsulatorMaterial
│ │ │ │ └──────────── [6-7] PinsPerRow (numeric)
│ │ │ └────────────── [5] Rows (1/2/3)
│ │ └──────────────── [4] HouseCount (usually 0)
│ └─────────────────── [2-3] PlasticsHeight × 10 (31 = 3.1mm)
└────────────────────── [0-1] Family (13/16/17/26/27)
Total Length: 15 characters (fixed)
2. JILN Distributor Format (15-18 characters)
Used on LCSC, JLCPCB, and other distributor platforms.
321010MG0CBK00A02
│││││││││││││││└┴─ Suffix codes (variant/packaging)
││││││││││││└┴──── Additional encoding
│││││││││││└────── K = Black color
││││││││││└─────── B = Material/housing
│││││││││└──────── C = Series/family code
││││││││└───────── 0 = Placeholder
│││││││└────────── G = Gold plating
││││││└─────────── M = SMT mounting
││││└┴──────────── 10 = Pin count (2x5=10)
│││└───────────── 1 = Rows
││└────────────── 2 = Pitch indicator (2.54mm)
└┴─────────────── 32 = Family/series (IDC)
Elprint Format Reference Tables
Family Codes (Positions 0-1)
| Code | Type | Pitch | Gender | Description |
|---|---|---|---|---|
| 13 | Pin Header | 1.27mm | Male | Fine pitch headers |
| 16 | Pin Header | 2.00mm | Male | Standard headers |
| 17 | Pin Header | 2.54mm | Male | Standard 0.1" headers |
| 26 | Female Header | 2.00mm | Female | Socket/receptacle |
| 27 | Female Header | 2.54mm | Female | Standard 0.1" sockets |
Plastics Height (Positions 2-3)
Encoded as height in mm × 10:
31= 3.1mm35= 3.5mm85= 8.5mm
Formula: height_mm = parseInt(positions[2:4]) * 0.1
House Count (Position 4)
Always 0 for current Jinling products.
Rows (Position 5)
1= Single row2= Dual row3= Triple row
Pins Per Row (Positions 6-7)
MUST be numeric (e.g., 02, 10, 20, 40).
Pin count calculation: rows × pinsPerRow
Examples:
1row ×40pins = 40 total2rows ×20pins = 40 total2rows ×02pins = 4 total
Insulator Material (Position 8)
| Code | Material | Full Name |
|---|---|---|
| A | PBT | Polybutylene Terephthalate |
| B | PA66 | Polyamide 66 (Nylon 66) |
| C | PA6T | Polyamide 6T |
| D | PA46 | Polyamide 46 |
| E | PA9T | Polyamide 9T |
| F | LCP | Liquid Crystal Polymer |
Post (Position 9)
| Code | Meaning |
|---|---|
| W | With post/standoff |
| N | Without post |
Contact Plating (Positions 10-11)
| Code | Plating | Thickness |
|---|---|---|
| SN | Tin | - |
| G0 | Gold Flash | < 1µin |
| G1 | Gold | 3µin |
| G2 | Gold | 5µin |
| G3 | Gold | 10µin |
| G4 | Gold | 15µin |
| G5 | Gold | 30µin |
| S0 | Gold Flash/Tin | Mixed |
Connector Type (Position 12)
| Code | Type | Description |
|---|---|---|
| M | SMT | Surface Mount |
| S | Straight THT | 180° through-hole |
| R | Right Angle THT | 90° through-hole |
| W | Straddle THT | Straddle mount |
| Z | Right Angle SMT | 90° surface mount |
Contact Type (Position 13)
| Code | Type |
|---|---|
| U | U-Type |
| S | Straight |
| R | Right Angle |
Packing (Position 14)
| Code | Package Type |
|---|---|
| T | Tube |
| P | Tube + Cap |
| R | Reel |
| O | PE Bag |
| A | Tray |
Example MPN Decoding
Example 1: 27310202ANG3SUT
27 31 0 2 02 A N G3 S U T
│ │ │ │ │ │ │ │ │ │ └─ T = Tube packing
│ │ │ │ │ │ │ │ │ └─── U = U-Type contact
│ │ │ │ │ │ │ │ └───── S = Straight THT
│ │ │ │ │ │ │ └─────── G3 = 10µin Gold
│ │ │ │ │ │ └────────── N = No post
│ │ │ │ │ └─────────── A = PBT material
│ │ │ │ └──────────── 02 = 2 pins per row
│ │ │ └────────────── 2 = Dual row
│ │ └──────────────── 0 = No houses
│ └─────────────────── 31 = 3.1mm height
└────────────────────── 27 = Female Header (2.54mm pitch)
Decoded: 2.54mm female header, 2 rows × 2 pins = 4 total, 3.1mm height, PBT, no post, 10µin gold plating, straight THT, U-type contacts, tube packing
Example 2: 17310140ANSNSUT
17 31 0 1 40 A N SN S U T
Decoded: 2.54mm pin header (male), 1 row × 40 pins = 40 total, 3.1mm height, PBT, no post, tin plating, straight THT, U-type contacts, tube packing
Distributor Format Examples
Real Jinling part numbers from LCSC:
| MPN | Description | LCSC ID |
|---|---|---|
| 321010MG0CBK00A02 | IDC 2x5P (10 pins) 2.54mm SMT Gold | C601966 |
| 12251140CNG0S115001 | Pin Header 1x40P 2.54mm THT | C429959 |
| 12251220ANG0S115001 | Pin Header 2x20P 2.54mm THT | C429965 |
| 22850120ANG1SYA01 | Female Header 2.54mm | C429947 |
| 22850102ANG1SYA02 | Female Header 2.54mm | C429966 |
| 13201140CNG0S087004 | Pin Header 1.27mm 1x40P | C429955 |
Handler Implementation Notes
Pattern Matching
Elprint format requires:
- Exactly 15 characters
- Family code:
13,16,17,26, or27 - Positions 2-7 must be numeric
// Elprint pattern (15 chars)
^(?:13|16|17|26|27)[0-9]{4}[0-9]{2}[A-Z][A-Z]{2}[A-Z]{3}$
// Distributor patterns
^32[0-9]{4}[A-Z]{2}[0-9][A-Z]{3}[0-9]{2}[A-Z][0-9]{2} // IDC
^1[0-9]{4}[0-9]{3,4}[A-Z]{3}[0-9][A-Z][0-9]{6,7} // Pin headers (12xxx)
^22[0-9]{3}[0-9]{3,4}[A-Z]{3}[0-9][A-Z]{3}[A-Z][0-9]{2} // Female headers
Position-Based Extraction
CRITICAL: Always validate MPN length before substring operations!
private boolean isElprintFormat(String mpn) {
if (mpn == null || mpn.length() < 15) return false;
String family = mpn.substring(0, 2);
boolean isKnownFamily = "13".equals(family) || "16".equals(family) ||
"17".equals(family) || "26".equals(family) ||
"27".equals(family);
// Positions 2-7 must be numeric
boolean hasNumericPrefix = mpn.substring(2, 6).matches("[0-9]+") &&
mpn.substring(6, 8).matches("[0-9]+");
return isKnownFamily && hasNumericPrefix;
}
Pin Count Calculation
public int extractPinCount(String mpn) {
if (!isElprintFormat(mpn)) return 0;
try {
int rows = Character.getNumericValue(mpn.charAt(5));
int pinsPerRow = Integer.parseInt(mpn.substring(6, 8));
return rows * pinsPerRow;
} catch (NumberFormatException e) {
return 0;
}
}
Package Code Extraction
public String extractPackageCode(String mpn) {
if (!isElprintFormat(mpn) || mpn.length() < 13) return "";
String typeCode = mpn.substring(12, 13);
return CONNECTOR_TYPES.getOrDefault(typeCode, typeCode);
}
Official Replacement Logic
Components are interchangeable if:
- Same family (e.g., both 27)
- Same pin count
- Compatible mounting types (both SMT or both THT)
Different plating, material, or packing are acceptable variations.
Related Files
- Handler:
src/main/java/no/cantara/electronic/component/lib/manufacturers/JinlingHandler.java(~560 lines) - Tests:
src/test/java/no/cantara/electronic/component/lib/handlers/JinlingHandlerTest.java(~550 lines, 131 tests) - Component Types:
CONNECTOR,CONNECTOR_JINLING - Manufacturer Enum:
ComponentManufacturer.JINLING
Known Issues & Edge Cases
Test MPN Format Issue (RESOLVED)
Problem: Initial test MPNs used 13-17 character format instead of required 15 characters.
Example:
- ❌ Wrong:
273102NSNSUXT(13 chars with non-numeric positions) - ❌ Wrong:
27310202ASNSUTT(17 chars) - ❌ Wrong:
17310110AG3SUT(14 chars - missing post indicator) - ✅ Correct:
27310202ANG3SUT(15 chars, all numeric in positions 2-7)
Resolution: All 131 tests now use proper 15-character elprint format. Handler pattern enforces exact length validation with length() != 15 check.
Handler Pattern Conflicts
The handler registers patterns for both encoding systems:
- Elprint: Families 13/16/17/26/27
- Distributor: Families 12/22/32/35
Ensure ComponentManufacturer.JINLING pattern covers both:
JINLING("(?:1[2367]|2[267]|3[25])[0-9]{4,}", "Shenzhen Jinling Electronics", new JinlingHandler())
Position-Based Extraction Gotchas
- Always check MPN length before substring - prevents IndexOutOfBoundsException
- Positions 6-7 MUST be numeric - test MPNs with letters like "NS" will fail
- Position 14 is single character for packing, not two
- Default to 0/empty when extraction fails - graceful degradation
Cross-Handler Pattern Matching
Jinling patterns (^13..., ^17...) could conflict with other manufacturers using similar prefixes. The matches() method includes explicit family checks to prevent false positives.
Test Examples
Stable Pattern Matching Tests
@Test
void shouldMatchElprintFormat() {
assertTrue(handler.matches("27310202ANG3SUT", ComponentType.CONNECTOR, registry));
assertTrue(handler.matches("17310140ANSNSUT", ComponentType.CONNECTOR, registry));
}
@Test
void shouldMatchDistributorFormat() {
assertTrue(handler.matches("321010MG0CBK00A02", ComponentType.CONNECTOR, registry));
assertTrue(handler.matches("12251140CNG0S115001", ComponentType.CONNECTOR, registry));
}
Extraction Tests
@Test
void shouldExtractPinCount() {
assertEquals(4, handler.extractPinCount("27310202ANG3SUT")); // 2×2=4
assertEquals(40, handler.extractPinCount("17310140ANSNSUT")); // 1×40=40
assertEquals(80, handler.extractPinCount("27310240ANSNSUT")); // 2×40=80
}
@Test
void shouldExtractPackageCode() {
assertEquals("SMT", handler.extractPackageCode("27310202MNSNSUT"));
assertEquals("Straight THT", handler.extractPackageCode("27310202ANSNSUT"));
assertEquals("Right Angle THT", handler.extractPackageCode("27310202ARSNRUT"));
}
Future Improvements
Test MPN Format: Update all test MPNs to proper 15-character elprint format✓ COMPLETED- Distributor MPN Decoding: Implement full parsing for LCSC/JLCPCB format MPNs (partially done - pin count extraction works)
- Layout Variants: Add support for optional [15-16] layout codes (TYPE 01, TYPE 02)
- IDC Connector Family (32): Expand handler to include full IDC connector support (basic pattern matching works)
- Validation: Add MPN format validator to detect malformed part numbers
Learnings & Quirks
- Two Encodings: Jinling uses both internal (elprint) and external (distributor) MPN formats
- Fixed Length: Elprint format is exactly 15 characters, not variable length
- Numeric Pins: Positions 6-7 must be numeric digits, not letters
- Family Determines Type: Family code determines gender (13/16/17=male, 26/27=female) and pitch
- Position 12 Critical: Connector type (M/S/R/W/Z) determines mounting style and orientation
- Gold Plating Grades: G0-G5 represent different gold thicknesses (flash to 30µin)
- Real-World MPNs: LCSC uses distributor format (18 chars), not elprint format (15 chars)
- Position Misalignment: Test failures often indicate wrong position encoding (e.g., connector type at pos 8 instead of 12)
- Missing Characters: 14-char MPNs usually missing post indicator 'N' at position 9
- Pattern Validation: Use
length() != 15notlength() < 15to catch both too short AND too long MPNs - Substring Safety: Always validate length before
substring(6,8)operations to prevent IndexOutOfBoundsException